Singapote t
J M S94f
-33 50
30
$2.95.
MICRO JOURMM.
Motoi-nl5l VME - MACINT0SH - s 50
1VIUIUI Ul<» &. Other 68XXX Systemi
Sr stem a
6809 68008 68000 68010 68020 68030
The Migtznte for Motorola CPU Deviou FLEX
Jf %lstr Contributor lemmai
OS-9
SK'DOS
This Issue:
Plmr
Mac-Watch pJZ8
"C" User Notes p.12
Basically OS-9 p.7
PASCAL p.47
Software User Notes p. 18
- Tnl lUtklng ft t,o(k*n> Speaking And Lots Mart!
VOLUME IX ISSUE X • Devoted to the 68XXX User • October 1987
The Grandfather of "DeskToo Publishing™"
m
* ■.-■*Lflf*T.- , w-^K
GESPAC Gives You
68000 Performance at 8-bit Prices.
MPU-4B SNI00030 1
Actual Size
introducing another Price / Performance
breakthrough from GESPAC: A complete 68000
CPU module for $395 unit price. The GESMPU-48.
Wherever you thought of using an 8-bit
microprocessor to do a job, you con now use the
16/32 -bit GESMPU-48 instead. It will do the job,
better, faster, and best-of-all for the same money.
On a single height Eurocard, we have packed an
8 MHz 68000 microprocessor (16 MHz optional),
four sockets for up to 64 Kilobytes of zero-wait-states
CMOS RAM and up to 128 Kilobytes of EPROM,
one RS-232 serial port, and three 16-bit timers.
The GESMPU-48 is fully expandable through
the standard G-64 bus, to accommodate up to
16 Megabytes of external memory. You can add
any of more than 300 I/O modules available from
GESPAC and o growing numbers of independent
G-64 bus vendors.
To make your programming tasks easier,
GESPAC supports the GESMPU-48 with the OS-9«
and PDOS® real-time, multi-tasking operating
systems and most popular high level languages
and software development tools.
.00
Single Quantity
$316 •
IDOpiKM
If you too like the idea of getting more for
less, contact us today to receive information
on the GESMPU-48 and the G-64 bus concept
from GESPAC— the leader in single Eurocard
microcomputer products worldwide.
Call Toll Free 1-800-4-GESPAC
or Call (602) 962-5559.
33E
IN USA -CANADA
50A West Hoover Ave.
Mesa, Arizona 85202
Tel. (602) 962-5559
Telex 386575
INTERNATIONAL
3, chemin des Aulx
CH-1228 Geneva
Tel. (022) 713400
Telex 429989
G^oixieMiOTmiihlmdwid.marfaolGeSMCSA OS-9 n o n^nwraef tadnoort o* Mkro*m Corp KrahaF*gnmdmxi«raTtotErmigRnmRttln<MtA!nc
THE GMX 020BUG DEBUGGER/ DIAGNOSTIC PACKAGE
This extensive firmware package provides a broad range ol
program development tools and a complete suite ol diagnostic
programs lor exercising GMX Mlcro-20 hardware
The debugger includes commands lor displaying and modifying
registers am) memory. It the optional 68681 Floating-Point
Coprocessor is installed, Its registers are also accessible Memory
can be displayed in hexadecimal and ASCII formal, as tloaiing-point
values (single, double, extended or packed format), or as
disassembled instructions (including FPC Instructions). Memory
modify can be done with hexadecimal values, with ASCII strings,
with floating-point values, or with a one-line assembler which
supporis Ihe lull 68020 Instruction set (although not the FPC
instructions). Block move, fill, and search are also available
Several dilferenl modes for tracing or executing user programs
are provided, along with a powerful breakpoint facility Programs
and data may be downloaded from a host system or uploaded back
to the hosl. and the GMX Micro- 20 console may be used as a host
system terminal. A serial printer may be hooked up, and used to
make hardcopy listings ot debugger sessions as desired.
The diagnostic firmware includes 90 test commands and 16
utilities Complete test suites are provided for each functional block
ol the GMX Micro-20's hardware, including, lor example, 9
DEBUGGING COMMANDS
MD
— Memory display
MM
— Memory modify
MS
— Memory set
BF
- Block fill
BM
— Block move
BS
- Biock search
HO
— Register display
RM
- Register modify
OF
- Olfsel registers
BR
— Breakpoint set
MDBR
- Breakpoint dele re
6
- Go» tajet code
60
- Oo. Welt breakpoints
6N
- Be, etop after 1 instruction
6T
— GA set temp brrakjront
T
— Trace
TC
- Traa ot champs o» Vow
TT
- Tract Id amp breakpoint
LO
- Download
OU
- UplOM
VE
— Verily download
TM
— Terminal mode
PA
— Printer attach
NOPA
— Remove printer
Pf
- Port loniiat
TO
— Time display
TS
— Time sal
SO
— Switch directory
RS
— Restart system
OS
— Boot operabng system
NV
— Non-verbose mode
SE
— Slop on error mode
IE
— Loop on error mode
LC
- Loop continual mode
ST
— Settest mode
STL
— Selttest with LED mode
w
different tests for memory, g tests for serial I/O ports, 2 tests for
the 68881 FPC. and 9 tests tor the optional memory management
unit. For the peripheral control interfaces (floppy disk, SASI/SCSI
hard disk or tape), test commands support a broad range ot
peripheral operations (read, write, format, etc.) so that the user
may test both the Interlace and an attached device Tests are
provided lor add-on I/O boards, Including the ARCnet Interface, I/O
Channel interlace, and parallel and serial expansion boards
The utility commands allow the user to execute groups ol test
commands conveniently, repeal commands or command groups,
enable or disable detailed fault reporting, count detected errors, or
execute all the non-peripheral tests as a group. A switch option
allows this last function to be invoked automatically at power-on or
reset. Other utilities allow the user to check the slate ot the various
jumpers and switches on the GMX Micro-20 directly
in addition lo the Diagnostic command package. 020Bug
contains a confidence test which is always run after power-on or
reset. This test does a quick checkout ot the processor and the
basic system elements that are needed lor 020Bug operation. It any
deled is found, an error code is signalled by on-andoft blinks ol an
LED Ml 1^
\^H
DE - Oisplay errors
ZE — Zero errors
OP — Display pass count
ZP — Zero pass count
RL — Read loop ^^0
Wl - Write loop
DJ - Display baud rat* jumper settings
DS - Oisplay switch
MJ - Display MM U board lumper smngi
M — Scan I/O expansion space
TEST COMMANDS
AN - AlKnot Irrterfiei tatfe
A — Wakeup tesl
B - DIP Switch lest
C - Interrupts test
— Butter test
CA20 - On chip each* tests
A — Basic caching
B — Unlike tunction codes
C - Disable
- Clear
FD — Floppy disk casts
A - Set parameters
B - Drive select toggle
C — Side select toggle
D — Restore
E - Seek
F — Formal track
6 - Read
H - Write
1 - Copy twitter
J — Compare buffer
K - Fill butter
B - 66881 FPC control tuneuons
C — tick OMHator
- Interrupt sources
Meiaart tests
K^>
\
oft
- Set tunction cede
- Set «tan address
-Set end address
— Random jovwsjon test
- Match address test
- Walk-a-bit test
— Refresh lest
— Random byte lest
— Program lest
- TAS test
- Test 0000- 1 FFF
— Partial longword writes test
- Read
-Write %
- Compare buffers
-Fill writ) butler
-. Test interrupt
- Par* head
- Formal
SC - SASI/SCSI pmt wtlfi SCSI device
MU
- Memory Management tests
A - Map RAM data test
B — Map RAM address test
C — Map RAM partial write test
D — Map RAM landom data' tesl
E — Accessed bit reset test
F — Address mapping test
6 — Accessed /Dirty bits test
H - Valid/Wnte Enable test
I — Task sije lest
PP - Pirate) port tests
A — Print tesl pattern
B — Continual test bit pattern
C — Test bit pattern lor 10 sec
— Select drive
— Scan data lines
— Restore
-Seek
— Read
-Write
— Compare butlers
— Fill write butter
— Tesl intenupt
— Slop drive
— Format
SI - Serial I/O lasts
A - Select DUARTs
B — internal toopback
C — External toopback
D — Baud rales
E — Panly modes
F — Character lengths
6 — Handshake lines
I - BREAK delect
i — Interrupt output
K — Continual handshake toggle
PX - Pitailel I/O eipanslon board tests TA - Tape dihre tests
IC - I/O Channel tests
A - Print tesl: pattern
B — Bit rotate
MM - Miscellaneous hardware lasts
A - 68881 FPC instructions
A — Data, handsliake, and IRQ test
B — P4 connector tesl
C — Data and handshake toggle
SA - SASI/SCSI pen with SASI devlca
A — Select drive
B — Scan data lines
C - Restore
D - Seek
A — Rewind
B - Read
C - Write
E — Compare butters
F — Fill write butter
6 - Erase
CfTlX 1337 W. 37th Place, Chicago. IL 60609
(312) 927-5510 — TWX 910-221-4055 — FAX (312) 927-7352
'68' Micro Journal
October "87
A Member of the CPI Family
68 Micro
Journal
10 Years of Dedication to Motorola CPU Users
6800 6809 68000 68010 68020
The Originator of "DeskTop Publishing™"
Publisher
Don Williams Sr.
Executive Editor
Larry Williams
Production Manager
Tom Williams
Office Manager
Joyce Williams
Subscriptions
Kristi Hart
Contributing A Associate Editors
Ron Anderson Dr. E.M. "Bud" Pass
Ron Voigts Art Weller
DougLuric Dr. IhcoElbcu
Ed Law & Hundreds More of Us
Basically OS-9
"C" User Notes
Softwaie User Notes
Password
Ramblirgs
V Mac-Watch
/ Text Hacking
,-»A Logically Speaking
PASCAL
h Bit Bucket
Classifieds
^•(■.■-••■'•■-"ijiiiLij '
68 MICRO JOURNAL
Mwi-iiJlLl.IL. '««".' «uyWPrv
COMPUTER
PUBLISHING, INC
"Over a Decade of Service"
68 MICRO JOURNAL
Computer Publishing Center
5900 Cassandra Smith Road
PO Box 849
Ilixson, TN 37343
Phone (615) 842-4600 Telex 510 600-6630
Copyrighted © 1987 by Computer Publishing, Inc.
68 Micro Journal is the ot igtnal "OeskT op Publishing" product and has
conlinously published since 1978 using only micro-computers and
special "DeskTop" software. Using fust a kit built 6800 micro-com-
f>mer. a modi lied "ball" typewriter, and "home grown" DeskTop Pub-
ishmjs software. None was commercially available at that time. For
over 10 years we have baen doing "Desk! 'op Publishing") We origi-
nated what has become traditional "DeskTop Publishing"! Today 68
Micro Journal is acknowledged u the "Grandfather" of "DeskTop Pub
lishing" technology.
"Contribute Nothing • Expect Noth ing" dmw i<m
68 Micro Journal is published 12 times a year by Computer Publishing
Inc. Second Class Postage paid ISSN 0194-5025 at Hixson, TN. and
additional entries. Postmaster: send form 3597 to 68 Micro Journal.
POH 849, HiJtson, TN 37343.
Subscription Rates
1 Year $24.50 USA. Canada & Mexico $34.00 a year.
Others add $12.00 a year surface, $48.00 a year Airmail. USA
funds. 2 years $42.50. 3 years $64.50 plus additional postage
for each additional year.
Items or Articles for Publication
Articles submitted for publication must include authors name, ad-
dress, telephone number, date and a statement that the material is
oiiginal and the property of the author. Articles submitted should be
on diskette, OS-9. SK'DOS, FLEX, Macintosh or MS-DOS. All
printed items should be dark type and satisfactory for photo-reproduc-
tion. No blue ink! No hand written attic les • please) Diagrams o.k.
Please -do net format with spaces any text inde ts. charts, etc. (source
listingo.k.yWewilleditinaUformai i g.Texl should fa It flush left and
use a carriage return only o indicate a paragraph end. Please write
for ftee authors guide.
Letters & Advertising Cop;
letters to the Editor should be the onginalcopy, signed! Letters of grip
as well as praise are accepts ble . We reserve the right to reject any letter
or advertising material, for any reason we deem advisable. Advertis-
ing Rates: Commercial please contact 68 Micro Journal Advertising
Department. Classified advertising must be non-commercial. Mini-
mum of SIS JO for fust IS words. Add $.60 per wotd thereafter. No
classifieds accepted by telephone.
October «7
'68' Micro Journal
EXCITING SOFTWARE FROM THE LEADER...
OS-9 ELECTRONIC MAIL
Hash your message on Klectronic Mail Mail is a
screen or line oriented program that runs on your
OS 9/680X0 systems or over OS-9/NKT You can use
distributed mailing lists or consecutive mailing list to
get your message delivered And received mail can be
sent directly to your printer for immediate printout,
spooled on a multiuser system or saved to a 11 le Mail
features on line help and complete, easy to understand
documentation.
Klectronic Mail 1150 00.
OS-9/ST
N KW for your Atari ST! Now you can have the power of
OS 9 on your Atari 520 or 1040 ST A true
multi tasking environment for professional real time
results OS 9/ST is available in two configurations:
Personal .mil Professional. Choose either version for
true mulli user support And all at a price that puts
UNIX to shame
Personal OS 9/ST combines the power of OS 9 with
an interactive, structured liasic $150.00
PRINT SPOOLER
Spool it and Print it! Someone beat you lo the printer?
Don't blow your top while you cool your heels get the
OS 9/68000 Print Spooler and relax The full featured
Print Spooler automatically routes and monitors the
status of your devices and the output files to be spooled
Now you can have a complete print spooling manage
menl system at an affordable price
OS 9 Print Spooler $150 00
FORTRAN
Crunch It! with Our New KOKTKAN 77 Compiler Now
you have a powerful new tool to take full advantage of
the 68000 family of microprocessors With Microware's
KOItTKAN 77 Compiler you can generate code that uses
system-wide modules instead of linking redundant
copies of the standard library to each program Itesult:
less memory, less disk space, faster loading and
external updating!
KOItTKAN 77 Compiler $750.00
Professional OS 9£5T has a powerful Assembler,
Linker and User Debugger and the tools to turn
your Atari ST into a full C Language
workstation $600.00
OS-9/68020 C COMPILER
NKW "speed demon* C Compiler! Now you can get your
hands nn a highly optimized C language power
tool the OS 9/68020 C Compiler When coupled with
the MC6888! math co-processor, this compiler will let
you'll blast through complex math functions in the
blink of an eye All compiler/assembler/linker options
arc controlled by an intelligent compiler executive that
spares you from memorizing compiler options and
module calling sequences And the compiler includes
library functions tor memory management and system
events, and much, much more! The new OS 9/68020 C
Compiler is included with the Professional OS 9/68020
System Software Package
NewC language Compiler $750 00
To order these exciting N KW products or for more information
CALL TODAY!
Microware Systems Corporation
1900 N W I 14th Street * Des Moines. Iowa 50322
Phone 515 224 1929* Telex 911) 520 2535
West Coast Office
4401 Creat American Parkway * Suite 220
Santa Clara, California 95054
Microware Japan. I.td
41 19 Iloncho4 Chome. Kunabashi City *Chiba273.
Japan * Phone0473(28)4493 'Telex 781 299 3122
S I Pvrtotw 7
St* ■ *:4
S7SHJ UpptW
OH '
7»(»
Dr MWMH KM. Off*H
D«jlH SCMMAMI
|0 « 031 87 tl
cwon m>
2rtM i;
ck wbsi
Swi»n*nd
■norw (OSS! 1MJJ-!
I Lld
X M jbnn Sum
Luton BamtroMuf* LU< 2JE
i0s*7i ti3tn
PBOB» (M»
Con
•7Svi>t«noM
>'•■"■■ Batcn :■ a
NSW luli'llij
<a 919 4917
97 to* /**
93400
Fianc*
tMx BIS40S
Microware is on the move We have openings for Technical and Marketing Professionals.
Send your resume (in confidence) today and find out more about these exciting opportunities.
OS-D and BASIC09 ant tmtatnatka cl M«£/om/v and Motorola, UNIX 1$ « oadamark & Bat LatxnnylH. Inc.
'66' Micro Journal
Octal-* -87
^SsTA^e^^
Per SBC
% T
Mustang-020-
A DATA-COMP
Hi- Speed
Product
DATA-COMP proudly presents the first
Under $5000 "SUPER MICRO".
The MUSTANG.02Q™
MUSTANG-020.
The MUSTANG-020 68020 SBC
provides a powerful, compact, 32 bit computer
system featuring the "state of the art" Motorola
68020 "super" micro-processor. It comes
standard with 2 megabyte of high-speed SIP
dynamic RAM, serial and parallel ports, floppy
disk controller, a SASI hard disk interface for
intelligent hard disk controllers and a battery
backed-up time-of-day clock. Provisions are
made for the super powerful Motorola MC6888 1
floating point math co-processor, for heavy math
and number crunching applications. An optional
network interface uses one serial (four (4)
standard, expandable to 20) as a 125/bit per
second network channel. Supports as many as 32
nodes.
The MUSTANG-020 is ideally suited to a
wide variety of applications. It provides a cost
effective alternative to the other MC68020
systems now available. It is an excellent
introductoiy tool to the world of hi-power, hi-
spaed new generation "super micros". In
practical applications it has numerous
applications, ranging from scientific to education.
It is already being used by government agencies,
labs, universities, business and practically every
other critical applications center, worldwide,
where Due multi-user, multi-tasking needs exist.
The MUSTANG-020 is UNIX C level V
compatible. Where low cost and power is a must,
the MUSTANG-020 is the answer, as many have
discovered. Proving that price is not the standard
for quality!
As a software development station, a
general purpose scientific or small to medium
business computer, or a super efficient real-lime
controller in process control, the MUSTANG-
020 is the cost effective choice. With the optional
MC68881 floating point math co-processor
installed, it has the capability of systems costing
many times over it's total acquisition cost.
DATA-COMP
AW'
IMS 5 bkj no BBM
ftjL*<*,i
With the DATA-COMP "total package",
consisting of a heavy duty metal cabinet,
switching power supply with if/line by-passing,
5 inch DS/DD 80 track floppy, Xebec hard disk
controller, 25 megabyte Winchester hard disk,
four serial RS-232 pons and a UNIX C level V
compatible multi-tasking, multi-user operating
system, the price is under $5000, w/12.5
megahertz system clock (limited lime offer).
Most all popular high level languages are
available at very reasonable cost. The system is
expandable to 20 serial poits, at a cost of less
than $65 per port, in multiples of 8 port
expansion options.
The system SBC fully populated, quality
tested, with 4 serial ports pre-wired and board
mountedis available for less that $3000. Quantity
discounts are available for OEM and special
applications, in quantity. All that is required to
bnng to complete "system'' standards is a
cabinet, power supply, disks and operating
system. All these are available as separate items
from DATA-COMP.
I WOO C— W. 3n>*k Road
' llbm.Ti mO
Tatai HO KKMttO
A special version of the Motorola 020-
BUG is installed on each board. 020-BUG is a
ROM based bebugger package with facilities for
downloading and executing user programs from
a host system. It includes commands for display
and modification of memoiy, breakpoint
capabilities, a powerful assembler/disassemble
and numerous system diagnostics. Various 020-
BUG system routines, such as I/O handlers are
available for user programs.
Normal system speed is 3-4.5 MIPS, with
burst up to 10 MIPS, at 16.6 megahertz.
Intelligent I/O available for some operating
systems.
Hands-on "actual experience sessions",
before you buy, are available from DATA-
COMP. Call or write for additional information
or pricing.
Oc**er , 87
'68' Micro Journal
Mustang- 020 Mustang-08 Benchmarks.
JJ bit
Reg liter
Integer
long
:qk at 7500 Xenix ivt 3
»t«t uoo umi »c (iota
».1
J.I
DEC VAX 11/710 VXIX B»r»l«y i.l
).t
DEC VAX I 1/710
5.1
OOOt OS-* 4SX ■ Wi
11.0
61000 01-1 (IX 10 MM
»,4
mtruta-ot noot at-t tut to tat
».»
mitiuie-oio 4»oio at-t «** it w>«
7 »
» »»
mWTAJW- 020 ft020 MCHttl OalTLMX 1 1 SHe
1 <
l J;
K>ln(l
register long 1;
for (l-«r I < 9»»M»i t*H:
lltlllUt Hit* • MS*TAVO-02S 4 i Kttt).
nit to I - 10 taps (Morel* SpM*
OMMieralV.
•bde*eCCa^iW
cc
OCOOPe
HsttllTT
Oaefwofl PoxJ
Srjto-5j.il
Sr)fc»Mns«
$>?<■* Cinpti SHI Mcrai
PAT w/C nra
PAT/HJST Canto
S^jeor. <„ Wo.)
COM
t'uiii'jciMnjOm)
■ addtioaoog
lisaai
MOJO
3OXD0
loom
75O00
MOXtt
inn
PS.00
•95.00
a9oo
79.9)
*»J0
MH
1DM
MUM
ixxao
xdoo
mm
SSaCO
THE
P
R
O
115 MJil (optional t«.« Mhi jv xllable) MOS8O20 full JZ-bll wide path
32-blt wide data and address buses, non-multlplcxcd
on chip instruction cache
object code compatible with all UXXX family protestors
enhanced lojcructlonsct-mathco-processDrlnlcrfaoe
UMI math tii-*peed floating point co-procruar (optional)
direct extension of full 68020 Inetntctioo set
full »uppO]-t IEEE P7S4, draft 10.0
transcendental and ot her adentiric math function!
2 Megabyte of SIP RAM (512 x S2 bit organl lalion)
up to 25.K byte* of EPROM (64 x 32 bits)
4 Asynchronous serial I/O porta standard
optional to 20 atrial porta
standaid RS 232 Inleiface
optional actwoik inleiface
buffered 8 blit parallel port (1/2 MCS8230)
Centronics type plnoul
expans ton con nectar for I/O devices
lab II da La path
256 byte address space
2 Interrupt Inputs
dock and control signals
Motoiola I/O Cliannel Modules
time of day clock/calendar w/bjtlcfy backup
controller for 2, 5 1/4" floppy disk drives
single or double side, single or double density
Don't be mislead!
X to » track sci actable (48-96 TP I)
SASI inleiface
programmable periodic interrupt gencralor
interrupt rate from mkro-sero nds to seconds
highly accurate lime base (5 ll'M)
5 bit sense switch, readable by the CPU
Haidware single-step capability
ONLY Data-Corn p
delivers the Super
MVSTANC020
T}neeAt-4p.«d 6*020 *ytxonu ere proton dyenvkiAfi, at
NASA. Atomic Ejwffy Coirmaxe*. Government
Ajcacucr or weff or iVwversaer. fletnnso. Lata, and
ot)urCnn&dAppUaiU>»iCe*uTT.wcAlmi&c whore spars), math
onxierunf, and anitf-iiMr. maas'uitMt UNIX C Utl Vostuajiasitay
end low coat is a nana*
I MUSTANCWUoT* ettvtd 12J I
«4lulU Mas ttona
AAJli. lea Muttas]
Ml H> 20 Mai BWaMUH
[OF
HVH2
. 3 A4^*» CWA Wo<
RS2J2 *
Eeca end bppot 4edetke>d *». puro
(loo) of VJ Hhal pcro eq^aomefi
00 Irn Parallel I/O can!
Cere 3 61230 bscrucarTircii dia>.
fnmf. irf X lil.t t^h rfinl taifkr
awdjaxi cirtnA In r*> ei'jip
PiixUfpe Herd
trBM Tor twb dip «ut PO A ar*ii» & •
>upi.<ll2K0«AM.
7J0.D0
ion on
lonm
Only the'TRO" version
3000
sfBygi
of
t»M
OS-9 supported!
J7JM
J7SM
73000
Su>
1JS.00
This \s HEAVY DUTY
165 00
Country!
MUSTANG Kl SBC
S24WM
Cabinet wj/i»1lchlne, PS
S299.9S
5"-M track, floppy
DSVDO M49.9S
floppy cable
139.95
OS-9 eSK Prolan ion»l Ver.
JS50.00
* Indudei C Compiler ($500.00)
Winchester cable
$39.95
Winchester Orivt 25 Mbyte
W9S.O0
lisrd DUc controller
$395.00
Shipping USA UPS
$20.00
Toui: Save $1000.00 $5^<9.U
complete sytem $4,299.80
AROffrr euUfed teten-pi^Qf LAN. Bbar texk* lamnvj . caU.
LAN ien»m ditvart )20u0O
ErsempxbMDOd. I/O Qunoal kbouW
■ i'- Murrnwo-qarj"
IMi MI AVE DOOflO
SoRveri IXnvunli
UPGRADES
Write or Call
for Professional
OS-9 "Full Bore"
Upgrade Kit
Fackrrrieo'grranwNloffHafaot) '
I »aos*ionjioufOK)89XW(SSC Must I
. b» •orkinj oropeily endccmilsttMh J
1 si aofriwa, csfieja and ooo^rnafsaaon. ]
Cat lor more irrormausfl
UmFLEX Lot*
MC6888 1 f/p malh procaasor Add
18.67 Wu- MC68020
IS 6/ Mm MC6888 1
20 K*U MC68020 Sy»
Note all 6888 1 chips worn with 20 Mru Sy»
NOTE: Only Professional OS-9
now available (68020 Version)
Includes ($500.00) C Compiler
68020 & 68881 supported
♦ 100.00
$275.00
♦375.00
$37500
$7S0rxl
AI MUSTANO^OD™ lyno and teenl hr/en eeaxisedte
d l». te i co dl )e*d refrwow 10-70% cafwdee j on tasco. Cat or
erej lie aedea. Dtfconesy esfty eamr te Hit u well.
Data-Comp Division
-i;^> Mf^7 , » v A Pejco.de of Quality Service'
Compotsyr Publishing, Inc. SOOO Cossandra Sniih Road
Tatophon. 815 842-4601 - Taiax 510 60T>8«M Hasan. Tn 37343
*9
complete
25 Mbyte HD System
$4299.80
85 Mbyte HD System
$5748.80
'68' Micro Journal
04obOTS7
/ PAT - JUST '
PAT fim ©^
With 'C Source | (|fj
$229.00 [ %©8®inn)i
N
f r.- - -.1 %
*jr" - Med/*
\_y T» 5900 Cm uo*. Smith Ri
r w Iliuoo.Tn 37343
* T Tckt**™ 6I5 842-4S09
1 Y«l«510 60O-6«O
y
j^ m^^^imhh ;J
PAT FROM S. E. MEDIA - A FULL FEATURED SCREEN ORIENTED TEXT EDITOR
with all the best of PIE. For those who swore by and loved PIE, this is for YOU! All PIE
features & much more! Too many features to list. And if you don't like ours, change or add
your own. C source included. Easily configured to your CRT terminal, with special configuration
section. No sweat!
68008 - 68000 - 68010 - 68020 OS-9 68K $229.00
COMBO
PAT! JUST
Special $249.00
JUST
JUST from S. E. MEDIA - - Text formatter written by Ron Anderson; tor dot matrix
printers, provides many unique features. Output formatted to the display. User con-
figurable for adapting to other printers. Comes set-up for Epson MX80 with Graflex. Up
to 1 imbedded printer control commands. Compensates for double width printing.
Includes normal line width, page numbering, margin, indent, paragraph, space, vertical
skip lines, page length, centering, fill, justification, etc. Use with PAT or any other text
editor. The ONLY stand alone text processor for the 68XXX OS-9 68K, that we have
seen. And at a very LOW PRICE! Order from: S.E. MEDIA - see catalog this issue.
68008 - 68000 - 68010 - 68020 OS-9 68K
V With 'C source $79.95 J
Oclober"87 '68' Micro Journal
f
Btcaily OS-B
Dedicated to the serious OS-9 user.
The fastest growing users group world-wide!
6B09 - 6B030
A Tutorial Series
By: Ron Voigts
2024 Baldwin Court
Glendale Heights, IL
J
rTDONTWORKJ
Many times I get phone calls from friends who are
using OS-9. They have been trying to get some
program to iun. They have been at the keyboard for
a long time with only error messages and a lot of
frustration to show for their effort. I ask. "What Is
wrong?" And the reply Is pretty much the same. "IT
DON* r WORK!"
If you are an OS-9 user, then this must have
happened to you. If you say otherwise. 1 would
believe you are "pulling my leg." Why? Because It
happens to me. Now I have been around awhile, long
enough to know the bastes. But from time to time,
things Just don't work. This happened the other day.
I tried to run a familiar program and got only an
error message. It was error #216 File Not Found. It
entered DIR X and saw that It was in the file
directoiy. I tiled the full path name. Error #215 --
Bad Path Name. Well maybe I can load It Into
memoiy. So I try the LOAD command. Yep. you
guessed 11. It was another error. #214 -- No
Peimlsslon. Talk about aggravation! I tried using
IDENT and got error #243 -- CRC Error.
It was time to play OS-9 detective. I tiled DIR E X to
gain a little more information about the files In the
command directory. It showed me that IDENT's
owner was $8C0D. was a directory and contained
some Impossible number of bytes. In short, it was
hurt. Its file descriptor sector appeatred to be
glltched. The original program that I tried running
had incoirect attributes. I used ATTR on it and
salvaged It. Unfortunately. IDENT was a total loss
and had to be scrapped. ( A little more detective
showed that the AC line was the source of the
problems. Evidently I was picking up transients.
Currently I am tiylng one of those "spike
suppressors". It seems to be doing the trick. )
So what have we learned from all of this?
Specifically, there are a number of things that must
be correct for an executable module to run. The
module's header check byte. CRC value and
attributes must all be correct. If anyone of these Is
not right, it doesn't get loaded. If it Is not loaded, it
cant be iun.
The module header Is the first thing to consider.
There are 8 bytes. They are composed of the sync
bytes, module size, name offset, type, language,
attributes and revision. These 8 bytes are
exclusively ORed to cieate the header check.
Next Is the module's CRC. It is located in the last
three bytes of the module. This is a check of the
entire contents of the module. If so much as a single
byte is wrong, this will detect it. It won't tell where it
Is wrong, but at least it will tell something is wrong.
1 won't go Into the algorithm of how the CRC is
calculated. If you wish to Investigate it further, take a
look at the system request FSCRC. It can be used to
verify an existing module or the CRC can be
calculated for a new one.
One other Item to mention about the CRC. It Is only
checked when the module is loaded into memoiy.
Once the module Is listed tn the system module
directoiy. it is safe to modify. This can be
accomplished with SOLVE from Southeast Media or
DEBUC from Mlcroware. I'll show later how to do
this.
Finally, there is the attributes or the file. If the
module's file does not have execute peimlsslon. It
will not run. This Is what caused the errors 214. 215
and 216. tn my case. It Is necessary that at least the
owner execute be "turned on".
So now we know what goes wrong. How do we attack
the problem? If it does not want to run. then there
must be a reason. And it is most likely one of the
above. ( I did not talk about one obvious reason.
That is the correct excutlon directoiy. Always make
certain that you are in the execution directoiy and
that the file Is In it. Whenever I change disks. 1
always do a CHX /DO/CMDS. )
Checking the files attributes is a good Idea. The
ATTR command is available. Entering it wtth the
modules pathname will generate the necessary
Information. If you get something like:
'68' Micro Journal
October's:
you most likely have found a problem. So. we will
want to correct this. If the executable module's name
MVMODULE. we would enter:
OS9: attr mymodule -pe -e
This would give the module both public and owner
execute permission. I usually keep my programs as
both, unless I see a reason to exclude others from
using them.
The next step, if the attributes are OK. Is to check the
header check and CRC. This can be done with
VERIFY. VERIFY Inputs through the standard Input
path and prints It Information to the standard error
path. To use It. we enter:
OS9-. verify <nrymor)ule
Module's header parity Is correct.
Calculated CRC matches modules.
If come up wrong, the module is probably hurt. But if
you believe It Is not. then you can use VERIFY to
correct It. Lets say MYMODULE is to be corrected.
The U ( update ) option of VERIFY can be used. It will
then copy the module to the standard output path
replacing the header check and CRC with the correct
values. Entering the following:
OS9: verify u <mymodule >newmodule
will create a new version that will hopefully run.
These techniques may come In handy sometime.
There are no guarantees that a module will run after
you have applied them. Generally speaking, if the
CRC and header check do not match, the program Is
huit. Using VERIFY to correct them won't help. Ills
best to erase the sick program and replace It wtth a
good one.
FURTHER ANTICS WITH VERIFY
Besides correcting stck modules, there are other
reasons why you might want to use VERIFY. If you
have to patch a program, It would become necessary
to correct the module's CRC. Many times programs
come that are not quite the way you expected them.
You don't have the source code. You know what you
want it to do. The only way to get It there Is to patch
It
One such example Is the C Compiler licensed to
Tandy from Mlcrowaiv. It Is hard coded Into CCI
and C.PREP that the DEFS directory and other items
should be found on /D I . Now what tf you have only
one drive, but It Is double sided and called /DO. You
have the necessary space for everything, but the C
Compiler has Its heart on going to drive /Dl? YouVe
got to patch It. I'll show you how I did CC 1 and let
C.PREP up to you.
First. I loaded CC I Into memory wtth the command
LOAD. Next I used SOLVE. This is the Symbolic
Object/ Logic Verify and Examiner debugger form
South East Media. I used its monitor commands. I
does much more, but I'll tell about it another time.
Once Into SOLVE. I entered:
DBG: L CCI
B000 87.
This linked to CCI. SOLVE told me that CCI started
at location $BO00. Next I would find where the /Dl Is
located. I entered:
DBG: ? $B000 $D000
BEE4
/Dl
This asks, where the string of /Dl Is located? And
SOLVE said It started at $BEE4. Next I changed It to
"...". This would give me a little llexibUlty. The dots
would back me out a few dlrectoiy levels from where
I was at. So If the source code was at /DO/SOURCES.
It would use /DO. If I was on the RAM Disk and In
/R/SOURCES. It would use /R. So. I entered-
DBG: C $BEE4
BEE4 61 /"...
I Indicated that I wanted to change the byte at
$BEE4. It brought me there and I enterred the 3 dots
as a string, using the " Indicator. Now all was done. I
left SOLVE.
VERIFY could now be used.
save /dO/cmds/temp ecl
del -xcel
verify u <temp >ccl
del -x temp
This series of commands saveed the new CCI as a
file called TEMP. It dele teed the old CCI. Then
VERIFY was used to correct It. Finally, the file TEMP
was eliminated leaving the new version of CCI.
What could be easier? You can use your favorite
debugger. I like SOLVE. Once you have changed the
portion of the program of Interest, use VERIFY to
correct the CRC and header check. And you you're
all set.
DATE REVISITED
Some time back. I presented a replacement for the
command DATE. It appeared In the Februaiy '86
Issue. It was written In 6809 assembly code. I
created It with hopes of Improving the original. This
version printed time In standard, rather than
military notation. It used PM and AM. It also would
print the day of the week. For the most part It has
worked well. But I have recently have been thinking
of changing It Improving It.
I added a few more criterion to my design
considerations. First. I decided to rewrite It in C
code. This would make it more universal. Although
the final program Is a bit longer. I don't think
memory Is an objection. Second. I added the choice
of either standard or military time notation. Finally,
It will print the information in a "greeting" type
fashion. There are four options that can be used
with this new DATE command. They are:
-t . print the time
-m » use military notation
-d m include day of the week
-g - use greeting style
October 87
'68' Micro Journal
So, IT 1 entered:
OS9: date -t -m -d -g
I might see something like:
Good Evenlngl Today Is July 9. 1987
It Is Thursday The time Is 18:29:00
This makes a nice addition to your startup fUe. And
It looks a lot more friendly.
Rather than wilte the program In one large source
code. I broke It up Into smaller functions. I like to
take a modular approach to programming. I don't
have to consider a large program chunk, but rather
concentrate on smaller discrete units. I took a
course one time on programming style. A question
was put forth. "How long should a progjam unit be?"
The answer Is 60 lines. This Is how much space It
would take If listed to a printer. It can easily be
examined without any page Hipping. Actually, longer
than this is not necessarily bad. But the longer the
program unit gets, more errors can crop up.
Listing 1 Is the progiam DATE. I think It should be
fairly understandable. 1 created my own algorithm
for finding the day of the week. One Item of Interest
is the structure time, "nine' Is a pointer to a byte
structure. I declared It with
struct sgtbuf time;
This makes Is easy to pass as a parameter.
Referencing members of the structure Is a little more
complicated. For example, the year Is referred to as:
(•time). t_ year
Since the dot binds tighter, the parentheses are
used. This statement says the char value at t_year
pointed to by 'time'. Another method to Indicate this
Is:
LISTING 1
time->t_year
Either statement will work,
and stay with one.
1 chose to be consistent
I have Included another listing this month. LISTING
2. This Is a C function I presented last month. It Is
GETOPTfJ. I use It to return the options passed on
the command line. Actually the program only use a
small feature of It. But this does show how to make
use of GETOFTTJ. I plan on using this option parser
from time to time. You might want to keep a copy of
it somewhere, since 1 may not always rerun it.
That wiaps up another month of BASICALLY OS-9.
Take care until next timet
l
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
26
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
la
56
57
58
59
TRUE;
60
TRUE;
61
TRUE;
62
TRUE;
63
64
65
66
67
))
Name: Date.c
Date: 22-Jun-87
Author: Ron Voigts
Corcpller: Microware C Compiler
Version 1 .00
Prints the date and tiro to
the standard output path.
Function:
Prints the date .
-t - with the time
-in = time in military notation
-d - with the day of the week
-g - with a greeting
Idefine LEVEL2
•include <stdio.h>
•include <tlme.h>
•include "getopt.c"
Idefine TRUE 1
Idefine FALSE
/* Parameter flags */
Int mflag - FALSE; /« Military t;JHe */
int tflag - FALSE; /* Print time */
lnt dflag - FALSE; /* Print the day V
int gflag - FALSE; /* Greeting flag */
int pmflag - TRUE; /* PH flag */
struct sgtbuf *time;
maln( argc, argv )
int argc;
char *argvl];
(
/• Variables used */
char 'optlon,-
char *optlist-"KDTG";
/" Process the input line */
optn»l;
while I (opt ion -get opt < argc, argv, optlisl
NULL )
if ( opterr !- )
dhelpO;
else (
if ( toupper ('option) — 'M' ) mflag -
if ( toupper ('option) -- 'D' ) dflag -
if ( toupper ("option) ~ '?' ) tflag -
if ( toupper ('option) « "G ' ) gflag «•
/• Now get the time •/
getinie( time ) ;
'68' Micro Journal
October "87
68
/•
Print the greeting */
69
If ( gflag ) (
70
If ( ("time) .t_hour< 12 )
71
prlntf ('Good Morning! ">;
72
■lte if ( f time) ,t_hour<18 )
73
prlntf ('Good Afternoon! ■>,•
74
else
75
prlntf ("Good Evening! ");
76
1
77
78
/*
Print the date •/
79
If ( gflag )
80
prlntf ("Today Is ") ;
81
pdatel time );
82
/•
Print the day of the week */
83
If ( dflag ) (
84
If ( gflag )
es
prlntf ("It Is ");
86
pday( tine );
87
>
88
89
/*
Print the time •/
90
If ( tflag ) <
91
If ( gflag )
92
prlntf ("The time Is ");
93
If ( nflag >
94
pmtlme ( time ) ;
95
else
96
ptlme ( time ) ;
97
>
98
99
I
100
101
/'
Help for date •/
102
dhelpO
103
(
104
prlntf ("Usage: \n");
105
prlntf (" date [-t] [-«) [-dj [-g] W);
106
prlntf (" -t • with the time\n") ;
107
prlntf!" -m - time In military
notatlon\n") ;
108
prlntf (" -d - with the day of the
weekVri
")
109
prlntf (" -g • with a greetingVnVn") ;
110
exltt );
111
1
112
113
114
/•
Print the day of the week •/
US
pd«y( t )
116
struct sgtbuf *t;
117
(
118
119
/*
Variables used •/
120
lnt n;
121
reglster lnt i;
122
lnt fudge -3; /* My fudge factor •/
123
124
static char *day(] - (
125
"Sunday",
126
"Monday",
127
"Tuesday",
128
"Wednesday",
129
"Thursday",
130
"Friday",
131
"Saturday"
132
>;
133
134
static lnt day count |) • (
135
31, 28, 31, 30,
136
31, 30, 31, 31,
137
30, 31. 30, 31
138
t;
139
140 /* Calculate today's day of the week •/
141 n - f t) .t_year + fudge + ( ft) .t_year+3) /4;
for ( 1-0; Kft) -tjnonth ; i++ )
n+^Jay_count ll) ;
n««f t) .t_day;
142
143
144
145
146 /• Adjust If this Is leap year •/
If ( l(*t) -t_year » 4 )>
n++;
Print day of the week
printf("*s ", day[ n
I 7
147
148
149
150
151
152
153 )
154
155 /* Print the date •/
156 pdatet t )
157 struct sgtbiif *t;
158 (
159
160 /• The 12 months •/
static char 'month [] • {
"Unknown",
"Jaunary",
■February",
"March",
"April",
"May",
"June",
■July",
"August",
"Septeofcer",
•October",
"Noventoer".
"Dec«nber"
>0 it ft) .t month>2 I
1);
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
);
prlntf ("Is %2d, 19%02d\n-, month|(*t>
(*t).t_d*y, (*t).tjear>;
t_monthJ,
178
179
180 }
181
182 /• Print the time
183 ptlme ( t )
184 struct sgtbiif *t;
185 (
186
187
188
189
190
191
192
193
194
195
196
197 )
198
199 /* Print In military time •/
200 pmtlme ( t )
201 struct sgtbuf *t;
202 (
203 prlntf ("I02d:»02d:»02d\n",
204 ft) .t_mlnute, ft)
205 >
206
If ( ft) -t_hour<12 )
pmflag-FALSE;
If ( ft) .t_hour>12 )
ft) .thour— 12;
prlntf f %2d:»02d:%02d
ft) .t minute.
If ( pmflag )"
prlntf ("PM\n");
else
prlntf f AM\n");
", ft) ,t_hour.
ft) -t second );
ft) .t_hour,
t second I;
10
Octobef'87
'88' Micro Journal
LISTING 2
1
2
3
4
5
i
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
'<t+l
53
54
55
56
57
58
7
59
60
61
62
Name: GETOPT
By: Ron Voigts
Date: 25-MAV-87
Pi met Ion:
This function examines the argument list
returning a pointer to the option and
Its argument. A null string Is pointed
to If the option has now argument .
Version 1.00
Original.
•define TRUE 1
•define FALSE
char *optarg; /* Option argument */
lnt optn; /* Next option V
lnt opterr; /* Error status */
char *getopt( c, v, optllst )
lnt c; /* argument count */
char **v; /* argument vector */
char *optllst; /« option list */
lnt lsoptlon; /* option flag */
lnt hasarg; /* option argument flag */
register lnt 1; /* useful Index */
char *opt; /* option pointer */
char *t; /* argument pointer */
static char *null-'\0 1 ; /* null string */
/* Set up the null string for 'optarg' */
optarg - null;
/* Set up the error return status */
opterr - 0; /* No errors */
/' Set up the argument */
tcivioptn] ,-
/* We are at the end of the argument list */
If ( (optn— c) II (*t<-'-') II ( *t==--' ts
).. <\0' ) )
return ( ) ;
I* Ho can set the option */
opt - t+1;
/* Check If we have an option with an argument
lsoptlon - FALSE;
hasarg - FALSE;
for ( i»0; Kstrlen (optllst); £*+ )
If ( toupper(«(t+l)> — toupper (optllst U]) )
63
64
65
66
67
68 /♦
error */
69
70
71
72 /*
73
74
75
76
77
78
V
79
80
81
82
83
84
85
86
87 /♦
88
89
90
91 J
92
EOT
lsoptlon = TRUE;
If ( optlistti+ll — '«')
hasarg - TRUE;
If this Is not an option then return with
If ( ! lsoptlon )
opterr--l; /* Illegal option */
Now we check and set up the argument */
if ( hasarg ) {
if (Mt+2) — 'NO')
if ( optn < c-1 )
optarg - v[«^optn);
else
opterr— 2; /* Missing option argument
else
optarg - t+2;
if ( *optarg»- '«' )
optarg++;
} else
if ( *(t+2) != '\0' )
opterr--3; /* Argument not expected */
Now we have an argument and option */
optn++; /* Adjust the next pointer */
return! opt ); /* Return the option pointer
FOR THOSE WHO
68 MICRO
JOURNAL 1 "
'68' Micro Journal
October's?
11
^^^^m The C Programmers
m I iOA- Reference Source.
»P/^ Always Right On Target!
^^ ( C User Notes )
A Tutorial Series
By Dr. E. M. "Bud" Pass
1454 Latta Law; N.W.
Conyos. GA 30207
404 483-1717/4570
Qxrfuer Systems Consultants
INTRODUCTION
This chapter concludes the discussion of the conversion of Technical Systems Consultants
BASIC and Mlcroware BASIC09 programs Into C pro-ams begun In an earlier chapter.
CONVERTING BASIC PROGRAMS TO C
Following is a summary of the changes required to convert BASIC function calls to C. Many
differences are discussed elsewhere In this series. A bilef comment appeals with each function.
BASIC
FUNCTION
C EQOIVALENT
VALUE RETURNED
ABS
(n)
iaba (n) , laba(n), f aba (n
absolute value of n
ADDR
(n)
tn
addroaa of n
ASC
(sS)
*(a)
numeric value of first character of aS
ASN
(n)
faan(n) , daan (n)
arcaine of n
ATK
(n)
fatn(n), datn(n)
arctangent of n
CHR5
(n)
((char) (n & Oxff))
ASCII character corresponding to n
COS
(n)
fcoa (n) , dcoa(n)
cosine of n
CVTS%
(aS)
cvtai (a)
integer equivalent of 2-byte aS
CVTSF
(aS)
cvtaf (a)
floating equivalent of S/8-byte a$
CVT%S
(n)
cvtia(n)
2-byte equivalent of integer n
CVTFS
(n)
cvtfa(n)
5/8-byte equivalent of floating n
DATES
dates ()
current date (may be different format)
PEEK
(n)
<(*((char *) (n)) « 8) |
(•((char *) (n + 1))>
16-bit numeric value at addreaa n
EOF
(in)
none
teat if path n at end of file
ERL
none
error line number
12
October*?
'68' Micro Journal
i
I
ERR
EXP
(n)
FALSE
FIX
(n)
FLOAT
(n)
FRE
<n)
BEX
OS)
IHCHS
(n)
INSTR
(n,sl
IHT
(n)
LAND
(ra,n)
LEFTS
IsS.n)
LEN
(sS)
LNC7T
(n)
LOG
(n)
LOG10
(n)
LOR
(n.n)
LXOR
<m,n>
HIDS
(sS.nl
MOO
PEEK
PI
<oi, n)
(n)
err no
error number (will be different)
fexp(n) , dexp(n)
e co povBr n
'alse boolean constant
fint(n*0.5), dlnt(n*0.5)
rounded Integer value of n
((float) (n)), ((double) (n))
n converted to floating point
none
number of bytes of unallocated memory
hex(s)
numeric equivalent of hex string s$
inchs(n)
input one character frcn file n
, s2S) strchrstsl + (n),*s2)
first occurrence of s2S in slS starting
with character n or zero if not found
flnt(n), dlnt(n)
truncated integer value of n
(In) ( (n))
bitwise ra ana n
mids (s, 1, n)
string representing n characters
at beginning of sS
strlen(s)
length in bytes of sS
(-(nil
bitwise not n
flog(n), dlog(n)
natural logarithm of n
floglO(n), dloglO(n)
base 10 logarithm of n
<<>) I (nl)
bitwise m or n
<<m) * (n)l
bitwise m exor n
n2) mids<s,nl,n2)
string representing n2
characters starting at nl
characters into sS
Km) * In))
remainder of m divided by n
•((char «) (n))
8-bit numeric value at address n
3. H 159265
pi (3.14159265)
[ (n) ] none
character position in file n buffer
(vS[ (nl,nl,n] I) )) «vs, «vs[n], tvslnjln), «vs[n][n][n)
address of argument (see text)
(v[ (n(,n[,n)])l) iv, tv[n), *v[n)[n], *v[nj [nj [n]
address of argument (see text)
(s$,n) rights (s,n)
string representing n characters at-
end of sS
rnd(n)
random number between and 1
isgn (n) , lsgn (n) , fsgn(n), dsgn (n)
sign of n
fsin(n), dcos(n)
sine of n
sizeof (n)
size of n
lefts (spaces, n)
generate string of n spaces
((n) « (n))
n squared
fsqr(n), dsqr(n)
square root of n
fsqr(n), dsqr(n)
square root of n
strs(n)
string conversion of numeric n
(slS,s2S) strchrs(s2 ♦ n,*sl)
first occurrence of slS in s2S
or zero if not found
none
advance print buffer pointer to
position n
ftan(n), dtan(n)
tangent of n
trims (s)
string conversion of numeric n
1
true boolean constant
none
user function with parameter n
VAL (sS) val(s)
numeric conversion of string sS
POS
PTR
PTR
RIGHTS
RND
5GN
SIN
SIZE
SPC
SO
SQR
SORT
STRS
SUBSTR
TAB
(n)
(n)
(n)
(n)
(n)
(n)
(n)
(n)
(n)
(n)
TAN
(n)
TRIMS
(sS)
USR
<n)
I
c
3
Statement*
Statementa provide the means or specUylng the operations to be performed
and the order In which they arc to be performed In the BASIC language. The
statementa supported by the TSC BASICS and by BASICOQ are similar,
although not Identical. Many statementa have already been discussed in
previous sections of this discussion. Several of the more Important onea arc
discussed below.
Compound statements are separated by ':' and 'V In the BASIC Interpreters
and by ':' in the C compiler. Complex statement groups are formed In BASIC by
placing them on the same line, separated by ':' or 'V. They are formed In C by
surrounding them with T and T.
The IF statement has somewhat different formats among the TSC BASIC
and BASIC09 Interpreters and in the C compiler. The primary effect this has
on the conversion Is that an open brace must be placed before and a close
brace after each group of compound statementa between the THEN and the
ELSE or end of the logical line and between the ELSE and the end of the logtca
line.
A subtle dliference between the TSC BASIC FOR statement and the
BASICOQ FOR and C for statementa concerns (he fact that the TSC BASIC FOR
structure always executes the body of the structure once, whereas the BASICOt
and C structures check the terminating condition first, before executing the
body of the structure Initially. Also, because of the different methods used by
ISC BASIC and BASICOQ. multiple NEXT v statements for the same FOR
statement, although legal In TSC BASIC, may generate different results In
BASICOQ from those generated in TSC BASIC, and. of course, there Is only one
exit point from a C for statement.
The BASICOQ PROCEDURE declaration statement may be conversion Into i
C function header. Any PARAM declarations may be converted into C function
arguments, with the considerations discussed In an earlier chapter. Any DIM
and other declarations may be converted Into local or global variables, as
appropriate.
The GOTO statement of BASIC and the goto statement of C perform
essentially the same function. If labels are preceded by *L_. or some other
unique prefix, numeric BASIC labels will be made Into legal C labels and alpha
labels happening to coincide with C reserved words will also be made Into legal
C labels. Duplicate label Identifiers In separate BASICOQ PROCEDURES could
be made unique by prefixing each group with unique sk-tnga.
One consideration which has the capacity of materially complicating the
conversion of BASIC programs Into C programs Is the run-time structure
imposed by the GOSUB statement. If a BASIC program Is written In a modular
fashion such that there are no or very few branches Into and out of GOSUB
subroutines, the conversion is far simpler than in the case of the traditional
"bowl of spaghetti" BASIC programs in which a laige number of GOTO and
GOSUB statements are freely Intermingled. The primary conflict arises from
the consideration that the BASIC GOSUB statement should Ideally be
converted Into a C function call and the target label should be converted Into a
C function header. Branches Into and out of a C function are always Illegal,
even though many C compilers may not catch the error. In extreme cases. It
may be necessary to rewrite and rctest the BASIC code before conversion.
The TSC BASIC DIGITS statement has no direct equivalent in C. If the
formatting changes caused by the DIGITS statement are Important, some ol
them may be recovered thru the use of the appropriate formatting options of
the C fprintf statement. This includes the precision and width options of the C
prlntf statement.
The TSC BASIC FIEIX) statement and the BASICOQ TYPE statement are
often used to structure records to be read and written from and to disk files.
Other than the potentially dynamic status of the FIELD statement, both
statements may be converted to C structures. However, very few Individual
FIEID statements or TYPE statements define entire records, so It Is necessary
to somehow map out the record format or formats of Interest in order to
determine the corresponding C structure.
The GET and RJT statements of both versions of BASIC perform the actual
input and output Into and from these BASIC structures. In TSC BASIC, the
optional record number designations allow random record access: since the C
(seek fiuictlon requires the offset to be provided in bytes, not records, the
corresponding fseek argument must be multiplied by the siae of the structure.
DATA statements In TSC BASIC are considered as constants, and no
evaluation Is performed. DATA statements In BASICOQ arc considered as
expressions, which are evaluated as they are encountered thru the
corresponding READ statementa. The RESTORE statement resets the point of
evaluation of the DATA statements. All TSC BASIC sequences Intended to be
processed as character strings must be enclosed In double quote characters.
Depending upon the logic of the program, the DATA statement may be
converted as a C initializer or as a series of assignments.
The C language has no single statement directly corresponding to the ISC
BASIC statement SWAP, which exchanges its two arguments. However, the
SWAP statement may always be expanded Into three BASIC statements. In the
following manner:
MAP vlS,v2S
tenip$-vl$\
vlS=v2S\
v2S«tenp$
SWAP vl,v2
temp»vl\
vl=v2\
v2=ternp
thus eliminating the SWAP statement entirety.
Following is a summary of the changes required to convert TSC BASIC anc
BASICOQ statementa to C statements. A brief comment appears with each
statement conversion. When necessary. T Indicates TSC BASIC and B
Indicates BASICOQ.
BASIC STATEMENT C EQUIVALENT
OPERATION PERFORMED
BASE N none
set index base
BYE exit (0)
terminate execution
T chain s$ |N) system (s)
load and run BASIC program named sS
starting with line N or first line
B CHAIN s$ systea (s)
execute comnd line s$
CHD s$ chdir (si
change current data directory
CSX s$ none
change current execution directory
T CLOSE nl.nl... -II fclose (n)
B CLOSE fnl.lnl,...!]
close specified files nl, n2, ...
CREATE l,s$: IWRITElt+UPDATE] I+EXBC] n - fopen (s, ~v")
open new file nl with name s$
DATA N[,N(,...|] initializers, assignments
DATA S$[,S$[, ...]]
DATA -SS-[,"SS"|, ...]]
establish constant table within program
DEF FNv(x)-n Idefine FNv(x) (n)
define numeric function FNv with parameter x
DBG none
change trig functions to degrees
DIGITS n|,n] none
set number of digits to be printed
B DIM v(n(, n) )[,...] :800L£AN charvln] ...
declare dimensioned boolean values
B DM v(n[,n)> I, ...MBYTE charvln] ...
declare dimensioned characters
T DIM |»n,)vS<n(,n]) I, ...] [-N] char vs In] ...
declare dimensioned strings or declare
virtual array associated with file nl
B DIM vS(nl.nl) [ ]:STRING[N] charvsln] ...
declare dimensioned strings
T DIM I#n,|v%tn|,n])(,...J int v|nj ...
declare dimensioned integers or declare
viztual array associated with file nl
B DIM v(n|,n|)|, ... I: INTEGER int v[n] ...
declare dimensioned integers
T DIM l#n.Tv(nl.n»H....J int v|nj ...
declare dimensioned floating point variables
or virtual array associated with file nl
B DIM v(nl.nl) l,...]:R£AL int vfnj ...
declare dimensioned floating point variables
DPOKE nl,n2 ('((char *) (nil) - <n2 » 8);
*( (char *) (nl + 11) - n2)
store 16-bit value n2 at address nl
END return
terminate PROCEDURE or program
END sS {printf |-%s\n", s) ;
return; ]
print string and terminate PROCEDURE
ERROR
EXEC
EXITIF
FIELD
FOR
T GET
B GET
GOSUB
GOTO
IF
IF
IF
IF
IF
B IF
INPUT
INPUT
INPUT
INPOT
(n) none
generate error n
, s$ system (si
send coravsod line s$ to operating systea
x TBEN SI ... ENDEXIT if (x) (si; ...; break; )
if expression true, execute statements and exit
in,n AS v$((n[,n]| | [, ...| (establish structure)
establish fields in random I/O buffer
v-nl TO n2 (STEP n31 ... NEXT v (see text)
create loop structure with control variable
v set initially to nl, teiminal condition
of v crossing n2, step size n3 (or 1)
(C and BASIC09 check condition before first time,
TSC BASIC always executes body once)
fnll, RECORD n2] (see text)
read random file nl record n2 or next
•nl, structure (see text)
read file nl record into structure
(see text)
call subroutine starting at label N
goto L_N
branch to label N
X GOTO N if (x) goto L_N
branch to label N if expression x true
N
N
X THEN Nl
if (x) goto L_N1
branch to label Nl if expression x true
x THEN Nl ELSE N2 if (x) goto L_N1;
else goto L_N2
branch to label Nl if expression x true;
otherwise branch to label N2
x THEN SI if <x) then (si)
perform statement SI if expression x true
x THEN SI ELSE S2 if ( x ) then (si);
else (s2)
perform statement SI if expression x true;
otherwise perform statement S2
x THEN SI (ELSE S2] ENDIF (same as IF)
same as IF above
LINE Iln,)vS fgets (vs, size, n)
input string vS from file n or terminal
lln,]L (fprintf (n, "%s ") ;
f scanf (n, ". . . •', L) ;
input list L from file n or terminal
(tn,]|S$;)L (fprintf (n, "%s"l;
fscanf (n, ". ..-, L);
lln,||SS, ]L [fprintf (n, "%s ");
fscanf (n, ". . ."', L) ;
issue prompt SS to file n or terminal
and input list L from file n or terminal
2
I
c_
o
c
3
OPEN
OLD sS AS n n - fopen (s, "r")
T KILL
sS unlink Is)
open file nl with name sS
delete file named sS
OPEN
s$ AS n n _ fopen (s, "r+")
B KILL
s$ none
open file nl with name sS
unlink PROCEDURE
PAR AM
(like DIM)
[LET1
vS[(n[,nI) 3-sS same
declare PROCEDURE arguments
assign expression on right of equal
PAUSE
exit (0)
to variable on left (see text for string
pause and enter diagnostic mode
and virtual array conversions)
PAUSE
sS (printf ("»s\n", s) ;
[LET]
v|(n[,n])]-n same
exit (0); ]
assign expression on right of equal
print string, pause and enter diagnostic mode
to variable on left
POKE
nl,n2 M(char •) (nl) - (n2>
(see text for virtual array conversions)
store 6-bit-ualue n2 at address nl
LSET
vSKnl.nl) ]-sS (same as LET)
PRINT
MnMHUSING 3S[,H(g[,]]Ig[;1)(,...) (see text)
assign expression on right of equal
output characters to file n or terminal
to field variable on left of equal
PROCEDURE
(see text)
in left- justified mode
start PROCEDURE declaration
LOOP
SI ... ENDLOOP while (1) {si; ... }
T PUT
inll.RECORU n2] (see text)
perform statements endlessly
write random file nl record n2 or next
NEXT
v (end of for structure)
8 PUT
Inl, structure (see text)
initiate next iteration for FOR loop
write file nl record from structure
with control variable v
RAD
none
ON
ERROR GOTO [N] signal (...)
change trig functions to radians
set trap at label N for error interception
READ
L (see text for DATA)
ON
ERROR GOTO [0] signal (...)
read data into list L from DATA statements
terminate error interception trap
READ
#n,L none
ON
n GOSUB N1I.N2I, ...] ] switch (n)
read null-delimited list from file n
<
REM
/• ... •/
case 1 :
*
/•...•/
goto L_N1;
introduce remark
case 2:
RENAME
slS,s2S none (o-s dependent)
goto L_N2;
rename file named slS as s2S
I
REPEAT
SI ... UNTIL x do (si; ... } while (!(x))
>
perform statements unitl expression true
call subroutine at n-th label N
RESTORE
[N] (see text for DATA)
ON
n GOTO Nil, 821, ...11 switch (n)
(
reset DATA pointer to first statement
or to statement at label N
case 1:
RESUME
IN] (see text)
L_N1();
return to program from error routine
break;
to original statement or to label N
case 2 :
RETURN
return
L_N2();
return from most recent active GOSUB
break ;
)
RSET
vSf (n(,n))J=sS (same as LET)
assign expression on right of equal
to field variable on left of equal
branch to n-th label number N
(in right-justified mode)
OPEN
#,sS: [READ] (+WRITE) [+UPDATE) [+eXEC] [+DIR] n- fopen (s, "r") R0N
procedure ((pi (, ...] )] procedure ([pi |, ...) ])
open old file nl with name sS
call procedure with arguments pi, ...
OPEN
NEW sS AS n n - fopen (s, "w")
SEEK
#n,m fseek (n, (long)m, 0)
open new file nl with name sS
position file n to byte re
s
z
9
?
OS
SHELL sS system (si
if
I! strain (a, "-n")J
case "t":
pass comnand string to operating system
<
•
Mp - 1) - "\f ;
STOP exit (0)
++nl;
break;
terminate program
return "";
case ' v ' t
Slop s $ iprintf ("*s\n", s) ;
)
Mp - 1) - '\v-\-
exit (0); )
P -
string;
case "W":
print string and terminate program
if
SP+ + )
break;
SWAP v$((n[,n!l 1, vS((n[, nl) ] (see text)
«p++ — ' ■ ;
default:
exchange contents of specified variables
while (*a>
*p++ *» c;
SWAP vf (n[,n]l ],vl (n[,n])l (see text)
if ((«p++ - «a++) — 'W'l
J
exchange contents of specified variables
< )
TROFF . . . none
switch (c - «a++) »p » 0,
turn trace off
{ return
string;
TRON . . . none
case 0: }
turn trace on
— a;
TYPE . . , none
break; EOF
declare new variable types
case '0':
WHILE x DO SI ... ENDWBILE while (X) (si; ... )
for (c - j - 0; isdigit(*a) it (j < 4);
while expression true perform statements
++j, ++a)
WRITE #n,L none
c - (c « 3) + <*a - '0');
write null-delimited list to file n
Mp - 1) •= c;
break;
case 'b':
EXAMPLE C EXAMPLE
Mp - 1) - '\b';
Following la this month's example C program ; It provides a version of the
break ;
echo program compatible with both UNIX System 5 and with UNIX BSD 4.2.
case ' c" :
— p;
++nl;
♦include <stdio.h>
break ;
♦include <ctype.h>
case •f:
♦include " version. h"
Mp - 1) - '\f<;
break ;
char stringl256), 'expand!), «p, «q;
case "n":
Int c, i, j, nl, sp;
MP - 11 - '\n\-
break ;
main (argc, argv)
case ' r ' :
lnt argc;
Mp - 1) - -Vr';
char *argvn-"
j
break;
for (1-1; i < argc; i++)
fputs (expand (argv[l] ) , stdout);
if (!nl)
putct'Xn', stdout);
f f lush (stdout);
exit (0) ;
1
■
1
char "expand(a)
char *a;
1
FOk
WMMmWMfmNEED TO KNOW
1 68 MICRO
■■HHHH
| JOURNAL™
SOFTWARE
A Tutorial Series
By: Ronald W. Anderson
3540 Sturbridge Court
Ann Arbor. MI 4810S
USER
From Basic Assembler to HLL's
OS-9, PLuS and PAT
Today is Saturday. Last Monday I decided to bile the bullet
and start to do a version of PAT for PLuS. I had dumped the
FLEX 6809 PL/9 source code over to the Mustang system
and made a few suits at the conversion. Primarily, the
difference is in how OS-9 handles files. Actually OS-9 takes
care of more of the detail for the user than FLEX does. I
went through the code removing the File Control Block
declarations and putting filenames into strings to be pointed
at when calling OS-9 to open files. On opening a file. OS-9
returns a path number used from that point on to refer to the
Hie. including when it is closed.
The PLuS compiler files. lib did not have the equivalent of
the GETFIL call in FLEX to gel a filename from the
command line, but with a liltle help from ihe OS-9 manual I
was able to write one, as I mentioned last time. Anyway, I
got down to business, first gelling Ihe whole big file to
compile without errors. On Monday night, I had reached
that point, but the compiled output didn't run at all. It just
didn't do anything. I had to reset the computer to gel
conool back. (Fairly normal for translating a big program).
The following week consisted of long evenings of finding
and fixing bugs, bul after that time, the job was about done.
One problem that I had was thai in FLEX a file error is
relumed in a location in ihe File Control Block, so for
example, when end of file is reached in reading an input file,
an 8 is stored in the second location in the FCB. Later I
could and did go back and look al the FCB to see if Ihe
input file had run oul. OS-9 returns an error in a register
after a file operation, and so the end of file error on ihe last
read of an input file goes away on the next file operation. I
had to save ihe fact thai the input file had been emptied in a
flag I called "eo_infile". I had ihe opposite problem in a
few instances where I carelessly got operations out of order
in a loop and tested Ihe error location before doing the next
file operation. If a file error was left in the location called
OS-9_error in Ihe PLuS library, I had an erroneous error
message. The older had been OK in Ihe FLEX version
because no error would be present before performing a file
operation on a new FCB. I finally gol Ihe operations and
ihe tests in ihe light order, and things were belter from that
point.
I learned how lo ask OS-9 for a big buffer space and set
PPAT as I have called Ihe Plus version for now (to
distinguish il fiom the C PAT that I was using to edit it), to
use a I00K buffer so I could use il to edit itself. I still had a
few peculiar file error messages under some conditions, but
they did no harm. A couple days later. I spent ihe evening
bying lo find a bug thai caused the output file lo be open
after I thought 1 had closed il, so I couldn't delete the file on
abandoning an edit. It turned oul, of course, that I had
misunderstood ihe CREATE procedure which not only creates
a directoiy entry, but also opens a file. I had opened il ihe
NOTES
second time (on another path) by opening it for write. I am
still puzzled as to why OS-9 didn't object lo opening ihe
same file twice on two different path numbers. With that
cleared up, the file handling seemed to be all squared away.
The compile lime for the whole PPAT on the Mustang
68020 system was 22 seconds. On ihe 68008 system il was
70 seconds. I found one place where Ihe PLuS code is
slower than the Microware "C" version, in the loading and
saving of files from and lo Ihe hard disk. The PLuS version
look aboul ihree limes as long lo read a file as Ihe "C"
version. In all other respects it seemed to be about
equivalent in performance, and PLuS generates aboul 20%
less object code.
I wroie a letter to Windrush lo inquire about ihe slow file
reading, but I had ihe ihought that perhaps "C" had a buffer
built in as part of the "C" runtime package, so it could read
a block of data from a file and then get the data via a shoiter
and quicker program path. I noticed that PLuS files.lib had a
"read__n " procedure. 1 had used the single character read call
"read(path)" which returns one character. The file was input
by reading il one character at a time into the edit buffer until
an end of file error was detected. PPAT loaded ita own
source, about 6SK of text, in 68 seconds. I changed Ihe
procedure lo read a large block at a lime using
"read_n(infile.l0O00,. buffer);" That call essentially read
10000 characters at a lime. Then I could increment the
pointer by the number returned by the procedure, which is
the actual number of characters read. It will read 10000. the
number specified, unless the end of file is reached. On end
of file it slops reading, and ihe procedure returns the number
of characters actually read. I found thai il read one character
pasl ihe end of the file, so I had to decrement my pointer,
and all was well. There was a slight improvement. Now il
reads ihe source file in just about 2 seconds, aboul 35 times
faster. Clearly there is a large overhead in the OS-9 call lo
read a single character. Aboul Ihen I had the thought of
telling read_n lo read 100000 characters since the parameter
is a LONG daia type, and thai it would slop al the end of file
and return the number read. I Died it and got into difficulty
with finding garbage pasl the end of my input file. I don't
understand why il didn't work but I backed up to the previous
version and all was fine again.
Writing Ihe buffer lo ihe output file was even easier. I
know ahead of lime just how many characters the file
contains. Il is first moved to Ihe beginning of the buffer,
so thai il starts at location (0) of ihe buffer. The pointer
'below' then contains the count of characters. OS-9 and the
files.lib of PLuS also support a "write_n* procedure, so I
simply wrote all the characters out in one call. The file was
written in just aboul three seconds! I note with some
puzzlement, that the 68008 syitem actually reads and writes
this long file from and lo ihe hard disk faster than the
Mustang 68020 system. There are two possible reasons for
this. The Mustang contains a Xybac disk conoollcr and Ihe
18
Oeie>b«r87
'68' Micro Journal
Peripheral Technology 68008 board is connected to a
Western Digital controller. Secondly, the P.T. system is
running the newest version "Professional OS-9" while the
Mustang is running OS-9 of a year ago. Perhaps the file
accessing has been streamlined. The difference in
performance is slight, but certainly obvious. (Don Williams
has confirmed that the difference is because of the disk
controllers).
The systems perform quite well. PPAT will move from the
lop of this 6SK file to the bottom in about three seconds on
the 68008 system and about twice as fast on the 68020.
The most visible difference was in a processor intense
procedure of searching for a string. I put a unique string at
(he end of the big 65K file and search for it from the lop of
the file. The 68008 version took 5 seconds to find the
string and 2 more to move to it. On the 68020 system, the
search seemed to be more like a second, with one more to
move to the bottom of the file. The time does not seem to
depend on the length of the string. 1 suppose a non-match
is generally detected after comparing one or two characters.
These times were after a little optimizing of the search
routine.
I figured at the start of the project that a SO page source
code program would be a pretty good test for PLuS. It was
more of a test of my programming ability and understanding
in the area of the file handling, since I found only one new
bug in PLuS. and I am not yet sure thai it is an error. The
manual doesn't mention the MOD function, though the old
PL9 has that function implemented. Anyway, the compiler
didn't complain when I used thai function, but it didn't give
me the correct results. I found no other bug in PLuS all
week.
Later I decided to look at the string search procedure in a
little more depth. I spent an hour flow charting the 20 or
so line procedure and thought I had really streamlined il.
Later I typed it in and tried it, finding no detectable
improvement over the previous versions. I thought of
several possible improved ways to do the search. One idea
was to search for a match of an integer or long value, by
fooling the compiler into thinking the search siring and
buffer were arrays of integers or longs. I suspect that with a
lot of fooling around with memory alignment and careful
handling of the start and end of the buffer, that approach
would yield a faster search, but I have to look at each
character in the buffer and determine if it is a CR. I must
keep track of the current line, so when I see a CR I must
increment or decrement the current line variable. This would
mean that my new scheme would involve scanning the buffer
twice, and so would probably slow tilings down.
The point is that eventually one reaches the point of
diminishing returns in trying to improve a program's
execution time. At this point. I could devise a new method
of keeping track of line numbers, perhaps by imbedding line
numbers in the buffer. Then I could just match the string
and go look for the line number at the beginning of the
current line. An integer double byte would do for line
numbers up to 32767, and I would then have to add some
distinguishing character to Hag a line number.
To my never ending list of possible improvements, I add
the idea of storing the text in the large edit buffer in
compressed form. That is. wherever there are two or more
space* in sequence, use the HT S09 code followed by a space
count. The loading of the large edit buffer to the screen
buffer would expand these horizontal tab functions and vice
versa. This would mean that one could edit a much larger
program in one chunk, and programs could be stored in
significantly smaller files. The PLuS source file for PPAT is
about 65K characters. There is a great deal of indentation in
the program source. Many lines reach an indent value of IS
or more, and most all lines start with at least three spaces,
so there would be considerable compression.
Impressions
I have been working with the 68008 and the 68020
systems rather extensively for the past couple of weeks, and
for several hours day, at least for last week, the 2 MHz
6809 system with 8" floppy disks. Let me say that after
several days with the 68008 system running in the same
room with ihe 6809 system, il is a real drag to go back to
that 6809 system. I was compiling programs of about equal
size (22-23K of object code) on the two systems. First,
after the optimization described above, the file load and save
operations for editing got to be intolerable on the old
system. Then I noted that I could compile a program three
limes on the 68008 system while the 6809 system was still
chugging along compiling a program. The speed advantage
for processor intensive operations seems to be right around
3.5.
Though OS-9 is a fine operating system, there are
applications in which it lends to get in the way. In our use
of computers in our company's product, we now are set up to
plug a disk drive and terminal into the final hardware ihat is
going to be shipped as a special measuring system and
machine control combined. We can ihen develop the
program or at least debug its, right in the final hardware,
recompiling and trying the code immediately. When we are
satisfied with the overall performance, we go program some
EPROMs and the job is done. Obviously for our purposes,
something simpler like SK*DOS would be more
straightforward. Our final product runs without operating
system overhead of any kind, so the simpler the O.S. the
easier to "disentangle" the program from it, SK'DOS looks
very promising for our future, and I have been doing some
preliminary things with il. ihough we are hopeful for a bit
more in the way of operable software to be available for
SK*DOS before we can really begin to make the switch.
I've promised io do a version of PAT for SK'DOS, hopefully
when the present efforts to get a fairly full "C" compiler
come to fruition. It has occurred to me that I could write the
I/O and File Handling libraries for PLuS so that its output
code would run under SK'DOS, but then I would have to
compile under OS-9, convert to the SI-S9 format, run the
code out a serial port to another system, switch operating
systems to SK*DOS. read the code back in from the other
external system, and convert it to a true binary loadable file.
While lhat cycle is not unusable once the library files are
debugged, I wouldn't want to have to debug communications
programs, conversion programs, I/O and FILE handling
libraries AND my SO page PAT program all at the same
lime. Neilher do I have the luxuiy of a great deal of lime to
spend working out so many phases of the project. Given a
reasonable "C" compiler I can start with my "C" version
that now runs under OS-9, use the serial trick to gel the
source file on the hard disk under SK'DOS, edil wiih the
very usable editor that is available, and get PAT working on
that system.
Folks at Windmsh. if this seems like unfair pressure, il is.
and I hope it works. You've told me you have no intention
of gelling PLuS up under SK'DOS. I told you. and I haven't
changed my mind, ihat PLuS to run under SK'DOS would
probably do more for SK'DOS than it would for PLuS, so I
can see why you mighl nol be willing to expend the effort
68' Micro Journal
October "87
19
lo do the Job. Let me jul say that 1 see the combination as
the only way our company can go, and that doing *o would
put u« in good shape in our plan to "upgrade" our product to
68XXX processors for the next several yean. Graham Trott
tells me thai PLuS is written in PLuS. and that 1 would have
an easier time following it than the original code in
assembler for the 6809. 1 publicly volunteer to give a good
by lo potting PLuS over to the SK'DOS operating system i I
you folks will let me have the source or the minimum part
of the source that 1 need in order lo write and debug the
links to SK'DOS I/O and disk Hie handling. In exchange, I
will agree to make the result your property to sell. 1 don't
want any royalty. Frankly 1 don't know if 1 am up to the
task, but I feel the need so strongly for an efficient compiler
and a simple operating system combination that 1 am
willing to give it a by. 1 might also mention that I might
nead more than a little help from Peter Stark as well, though
the SK'DOS manual is fairly extensive and descriptive in
temu that 1 understand.
A couple of weeks have gone by since the writing of the
above, and 1 have managed to gel PAT in PLuS form finished
to the point of reading the same terminal configuration file
as the "C" version. The PLuS version is still smaller than
the "C" version by about 10%, which is not really very
significant. I've added one more parameter to the (am mil
configuration files for both versions, the size of the edit
buffer in thousands of bytes. 1 got tired of hitting ESC on
the OS -9 system and popping out of my current shell and
therefore losing my environment parameters. 1 had one
other thought that would eliminate the environment
parameters altogether. PAT could look for the terminal
configuration file 'termcon' in the current working directory.
The user would have to have a copy in each directory in
which he edits, but on a multi-user system, each user could
have a different version of teimcon (given that each user has
a different terminal, of course) in his own working
directories. (I had even thought briefly of having the path
specified in the tamcon Hie, but having lo find the file lo
read the path to it wouldn't work at all, so 1 gave that one
up as my dumb idea of the week).
Programming Snarl
Have you ever noticed that the hardest pan of getting most
programs running is the control of the program flow? That
is, in a language like Pascal or "C" (or PLuS) the careful
construction of the IF-THEN-ELSE structures. Sometimes the
scope of a THEN or and ELSE can become obscure,
particularly if each is a long compound statement with a
number of BEGIN ■ END pain enclosing WHILE or other IF
THEN statements. 1 spent all afternoon today dying to
untangle a single page of code. Of course I was looking at
the wrong part of the code to find the error. 1 had set up an
array of strings and was finding a particular search suing in
the array, and then associating its position with an index
into other arrays lo store or recall information. The string
was actually an 8 digit part number. 1 blamed my siring
search procedure for most of the afternoon, bul then by
adding a couple of print statements 1 found that 1 was never
storing the string in the array in the first place. At that
point I quickly found thai an ELSE followed the wrong END.
Moving it to the correct place gave me instant results and
the program now runs fine. The problem would have been
obvious except for the fact that my indenting had been
fouled up by a program change previously.
My first program for a balancing machine with my current
company all Hi in one 2716 EPROM, and it used a 6116 2K
by 8 RAM. The whole program (in assembler) and RAM fit
on a SWTPc 6809 processor board. This latest program will
use 24K of ROM in the form of 2764As, and two 8K by 8
battery backed up RAM chips for a total of very nearly 24K
of program and I6K of RAM. In some other and larger
applications we have used multiple processors, or rather
more like multiple computers communicating via serial
ASCII data. We use software handshaking. That is, each
command is acknowledged with an appropriate and different
response or an error status message. We've come a long
way since that first 2K program (I had about 20 bytes free in
the 2K ROM). It becomes obvious at this point that we are
about to outgrow a 64K memoiy map with our main
programs. We figure that the 68008 will give us a 2.S to 3
limes spaed advantage over a 2 MHz 6809, and what for now
will surely seem like "unlimited" memoiy for program and
data.
Reminiscences
1 was thinking the other day about my first little computer
system other than that initial single board computer with
the LED display and the Hexadecimal keypad. If I remember
correctly, one memoiy board in that system held 4K bytes.
It was available as a 4K board with 2K worth of chips and a
2K expansion kit. 1 bought that first system with 8K
BASIC and 16K of RAM, and on thai, 1 had my first taste of
programming in BASIC. That 16K cost around S4O0. Later
1 bought some 8K boards at around S22S each, making 64K
of memory about $1800, bul then the power requirements
were such thai one would have to rebuild the power supply
in those early SWTPc boxes to power that much memory.
Also there were only 8 card slots and 56K of memory
possible because of the monitor and I/O addressing. 1
understand that now 1 can buy an 8K by 8 CMOS RAM chip
for about SIS, so I could have my 64K of STATIC RAM for
S120. Of course now. anything less than 512K or 1 Mbyte
is considered "small".
Am 1 saying 1 want to go back to "the good old days"?
No wayl 1 had BASIC, a good assembler, and a dumb line
editor to use. 1 couldn't do vety much vay fast with that
son of system. My first programming was done with
cassette tape for mass storage. Thai 8K BASIC took a good
5 minutes to load to memoiy. 1 would start il loading and
go to eat supper, reluming to find it ready lo run, or having
stopped with a read error. A year later 1 bought a pair of 5"
floppy disk drives and wondered how 1 would ever fill a disk
wiih files. (The old SSSD 35 track disks held some 85K
bytes or so of files). When the DSDD 8" disk drives got to
the point of being feasible to purchase, I bought a couple
and realized thai each disk held about as much as 12 of the
little disks, though those disks never were filled to capacity
so in practice 1 put about IS disks worth of information on
one 8" disk. Now it is clear that eveiy bil of software that 1
run on this old 6809 system, and all my data files would
easily fit on one 20Mbyte hard disk.
No, 1 don't want to go back. Bring on the latest and
newest in faster microprocessors, hard disks, operating
systems, user software... I'll be light here waiting to use
them. Hopefully 1 will be able to write about them too.
EOF
FOR THOSE WH
68 MICRO
JOURNAL^
20
October "87
'68' Micro Journal
f-r
PASSWORD
A SECURE INVESTMENT
"Mine..." Eyebrows raised, I turned and looked
at my son. He was sitting where he could see the
screen. 'That's your password, isn't it?" Even
though, it wasn't displayed, he had guessed it. It
gave me pause to think. 1 have worked with
computers, for years. Most of them, multiuser
systems. 1 had always prided myself on being
security conscience. Why was 1 using a simple four
letter password on my home system?
1 changed my password right away after that,
but it made me think about another incident. It
happened sometime ago with the same son. Now
this kid is pretty bright, but 1 think, no smarter
than any other who had been around home
computers since he was four years old. Steven
needed to transfer an OS-9* file from a standard
format disk to one for his CoCo*. Even though, he
had utilities on his own system to do it, he went
with the easier way of using my "/ccO" (for
COCO*) device descriptor and compatible driver
software. No problem. Except that the file
belonged to user zero, and on my system he has a
different user number. Well, he signed off and tried
signing on as superuser using the same password as
was on his own system. It worked. The system
manager password hadn't been changed since 1
bought the computer!
These two incidents spun around in my mind for
a while before 1 decided that part of the problem
was that it was hard to change passwords on an
OS-9* system. Well, not HARD, but inconvenient. I
had to sign on as superuser and edit the password
file and then go back and sign on as myself to go
about my business. There was no user accessible
password changing program. 1 looked around, but
couldn't turn one up that 1 liked. So 1 wrote my own.
My feeling is that even for a person who works
with computers all the time system security begins
at home.
What sort of program did 1 want? I have
always worked with multiuser systems as part of
my job. 1 have come to expect a certain format from
password changing programs. Basically they make
sure you are who you say you are and then ask you
for your new password and change the password
file to reflect your request. 1 didn't want to take
forever to write the thing. 1 like the TOOLS
approach to systems. 1 would rather use a group of
little programs (especially if they are already
written) than one big one to accomplish something.
Finally, I still have my trusty (rusty?) level one
system and memory is a concern. All of these
constraints can easily be handled by BASIC09*.
The program comes in two parts. One part is an
assembler subroutine called USER1D. In order to
change the password file, the program has to have
access to it. User zero is usually the owner of the
file and should be the only user who can read it.
After all what does all this accomplish if
everybody can read it? There are two ways to get at
a file you don't own. You can change the attribute
bytes in the file header or you can make the system
think you are the legal owner. Going after the file
header is fairly messy and the program still has to
know who you are so it doesn't change someone
else's password for you. User zero should be the
only one with that kind of power. Even If you know
someone elses userid and password, you should still
have to go to the trouble of signing on as him to
muck up his password. Now since we need to know
who called us and we need to have access to a file
that probably doesn't belong to us, we need a way to
get to the descriptor for our current process. OS-9*
has such a way. It comes as two OS-9* system calls.
These are F$id and FSsuser. F$id returns the owner
number (user Index) of the current process (that's
us). FSsuser changes the user number to whatever
you say (no questions asked.)
USERID is callable by BAS1C09* and accepts
one or two integer values. The first (and maybe
only) variable returns the current user index. If
there is a second integer variable passed to it, this
value is used to set the userid of the process. The
main PASSWORD program passes a zero in this
second value. This makes the process match the
owner of the password file and allows it to read,
copy and delete it.
1 tried to make PASSWORD as general as
possible, but there are some things to watch out for.
The two file variables, TF1LE and PFILE would
have to point to your system device. Password uses
shell commands, TMODE, ATTR and RENAME.
These must be available in either the module or
execution directories. I could be accused of taking
68' Micro Journal
October's?
21
the tools concept a little too far at this point. Yes,
what I wanted could have been done from inside
BASIC09*, but why make a program that is only
used once in a while more complex than it has to be?
The only shell command I hesitated to use was
ATTR. There ought to be a way to tell BASIC09*
not to make a file public read. I looked through the
documentation, but couldn't turn up anything. The
last thing that needs mentioning is, by setting
everything to upper case I don't have to mess with
mixed mode characters. It also means that ALL
USER DATA in the password file (ie. name and
password) must be UPPERCASE. Also the password
file is left around as long as possible. This means
that up to the end there is at least one copy of it on
the system.
There are some things that working on this
program and especially on this article have
brought to the surface. Security is a sword with two
edges. As the system manager you are obligated to
keep your users' files out of harm's way. This
includes not letting anyone but the owner mess with
them. In trying to do that though, you wind up in a
position do that very same kind of messing yourself.
I could have made the program much simpler if I
had just assumed that the person running it would
be authorized to use it. Leaving the password file
with public access is the most straight forward way
to do that. This is unacceptable on the grounds that
if anyone's password can be read, it gives access to
their files. However, by trying to get better control
I have opened a whole new can of worms. The
implication of the USERID routine is that I have
now made it easier to get to those very files I have
been trying to protect. The routine can be used in any
BASIC09* program to not only access a file but
change it so that the rightful owner can't even get
to it! I had to be very careful in the design of
password to make sure that a user was really who
he says he is.
In my work with PASSWORD, I have explored
the tools concept. This came in the form of shell
commands run from inside a BASCI09 program. I
pursued the use of a BASIC09* callable assembly
language subroutine. Coincidentally, the program
became a point from which to take a look at small
system security. Like most programming projects,
this one has been both interesting and an education.
Questions and comments are welcome, and may be
addressed to:
O. E. Groves
10912 Knights Bridge Ct.
Reston, Virginia 22090
• OS-9 is a registered trademark of Microware
Systems Incorporated. BASCI09 is a trade mark of
Microware and Motorola Inc. COCO refers to the
Color Computer, a Product of Tandy Radio Shack.
tJili <nl*rils BrlJde Ct.
Reston. Virginia 22090
»j«ust 14, 1987
Don Williams
Coaputer Publishing center
S9J0 Cassandra Sitltn Rd
Hlnon, Tenn. 373t3
Dear Don:
I see by tne old calendar It's been Just snort of
three years since I sent ay first article to 68' Micro.
Tne last tning I sent you was Just about one year ago.
Does that make me a reguler contributor? Well, hope-
full/ what I leek In quantity, I aake up for In quality.
The project I put together this time, continues (aore or
less) ay presentation of system utilities. It's the Kind
of prograa 1 like to see In 68' Micro end 1 believe In
trading In kind.
Like the rest of the stuff I've sent In over the
years, the article appeers twice on the disk. The rile
called "article .onel Ine" hes no control characters, no
hyphens, and no multiple speces. "Article .fat" Is a
suggested format for the article and was used to produce
the printed version In the package . "Password. 609" Is
the aaln program In 8A3IC09 source and "userld.esa" Is a
subroutine needed to run with It. The ".1st" versions of
the programs are foraated by their respective compilers
and the other file Is this cover letter.
I hope to see oany aore Issues of 68' Micro. I'll
see what I can do to keep ay contributions up. I bet If
ell your subscribers sent In only one article eech year,
you'd be swamped.
0. E. Groves
Editor's Note: Thanks Oral for the nice words. I
wholeheartedly agree. I guess some of the new
comers don't understand where we came from. I
wish everyone would keep in mind that we are a
"contributor supported" magazine. Without the
support and input of folks such as yourself, we
would have closed the doors a long time ago! It is a
paradoxical condition, but at this stage in the game
we are the third oldest computer magazine in
existence, the "Granddaddy" of the present rage
"desktop publishing" and have more readers and
distribution and less advertisers than at any other
time in our 10 yaar plus history.
1 also hope to see many more issues of 68 Micro
Journal, but I must admit, we not only need article
input, but could sure stand some new advertising
blood. Even in our time of need we fiave just recently
refused advertising because the product didn't meet
the standards we set years ago. I still believe,
despite lawsuits, poor or no profits, dwindling
advertisers and all the other adversities we are
presently going through, because of loyal folks such
as yourself, we will be around for quite some time to
comet
Thanhs Oral - God Bless!
DMW
22
October 67
'66' Micro Journal
PROCEDURE PASSWORD
(■ Thl« program changes Us currant user's piuwrd In Us /vO/sys/
{• password flla. If the caller Is user ura , the password far any
(* other user any b* changed ,
<*
(* NfflOR OATF. vtasicn coa-orr
J*
<• OC GROVES 07/10/87 1 INITIAL VERSION
(- OC CRAZES 07/25/(7 2 File names converted Co variable*.
t* Fix uaerld routine
C
(• Released Into public domain 19S7 - OE Groves
<*
{• define and lnltlalte variables
DIM unaK,oa%Ri:sniINC[32]; uld.prl:INTBCER; XDIH,t»IR.EX:STRING[321
DIM NUSER: INTEGER
DIM OUS£R,OPATK,IPATH,PROCMn,I,N:lHTECER
DIM OPASS, NPASS. TPASS. NAME, PFILE. TFILE: STRING [ 32)
DIM OKAY: BOOLEAN
ON ERROR GOTO ID
(• These flla nana will need to be changed to fit another system
PFILE - -/VO/SYS/PASSwCRO-
Tni£ - -/VO/SYS/PASSTQff-
QDWIlf
IF I -> 4 THEN
PRINT
PRIST •CHECK YOUR MFCWWrTCW AMD START AGAIN"
error s«
□OIF
{• Copy the password file while looking for natch to
I" user ruse and password
OEATE #Ct»th,TnX£:OTO»TE
OPEN »Ipath, PFILE :R£AD
WHILE NOT(DOF{«Ipjthl> DO
INPUT «Ipath,unam.pew-),uld,prl,XDlR,DOlft,EX
IF (UKAH - NAME) AND (PSND • OPASS) THEN
IF (OOSER - 0) OR (DID - OUSER) THEN
PStO • NPASS
OKAY • TRUE
END IF
EWIF
PRINT »Opath, unam;-,-;p«wri;-,-ruld;",";prl;",";XDIR;",";DOlR;
oraoou
CLOSE IIPATH
Ipath -
CLOSE WPATH
opath -
DELETE PFILE
SHELL "attr •♦ TFILE ♦ " -pr; RENAME ■ ♦ TTILE » " password*
oi
IPATH •
OPATH -
ouser-ti
nuser^)
OKAY • FALSE
npau - -*"
<• gat user number froa
run uaarid(ouaer,nuaar)
process descriptor and change to user
(• have all input converted to uppercase
shall -tapde .1 upe-
(* gat user information from the terminal
WHILE (I<<) AND (TPASS o NPASS) DO
(* turn on echo of user name
shall -tBDde .1 echo*
INPUT -WHAT IS YOUR USER ID NAME? -,MAM£
(• turn off echo of password data
ahell -tmode .1 -echo*
INPUT -WHAT Is YOUR OLD PASSWORD? ", OPASS
INPOT -ENTER NEW PASSWORD PLEASE. -.NPASS
INPUT -ENTER IT ONCE MORE PLEASE. ",TPASS
IF TPASS O NPASS THEN
PRINT
PRINT THE SECOND TIME WASN'T THE SAME-
END IF
IF OPASS - NPASS THEN
PRINT
PRINT -CAN'T USE THE OLD PASSWORD ACAIH"
TPASS • NPASS«-«-
END IF
{• If no match found, print
IF NOT (OKAY) THEN
PRINT -THAT IS NOT YOUR USER ID
□OIF
(■ fix terminal output
shell -unoda .1 -upe echo-
END
(• handle errors
10 N-CRR
IF NO0 THEN
PRINT
PRINT -ERROR > -;N
PRINT -NO CHANGES HADE-
PRINT
ENDIF
IF IPATH o THEN
CUKE flPATH
ENDIF
IF OPATH o THEN
CLOSE (OPATH
DELETE TFILE
ENDIF
shall -cmoda .1 -upe echo*
PASSWORD NOT CMAWGED*
oooo
0001
0044
0087
0OA4
0OA7
0008
B:PROCEDOR£ PASSWORD
(• This program changes the currant user's password in the /v0/ays/
(* password flla. If the caller la usar rero .the password for any
(• other user may be changed.
(•
(- adtnor date version comment
<•
s
5
s
3
OOOB
oioe
0148
01SD
0160
01 OF
0192
0193
01 M
01BS
oiu
01E9
0204
0224
022B
0231
0232
0272
0273
028A
02M
02A2
02A9
02BO
02B7
02 BE
02C4
02CB
02D3
02TB
02DC
031B
032A
032B
0353
0363
0364
038D
03A1
03BD
01CE
03F1
03F2
0413
0425
0426
0449
04 K
048F
049C
04 9E
04C1
04C3
04DO
04D2
04F6
0502
0504
OSOF
0513
051F
0521
054B
054F
0551
0586
(• OC GROVES 01/10/87 1 INITIAL VERSION
<• 0£ (3«0VE5 07/25/87 2 Hie names converted to variables.
(* Fix userld routine
C
(" Released Into public domain 1»87 - OE Groves
(♦
(■ define and initialze variables
DIM unam,pswd:STRING|32); uld,prl :1NTEGM; XDIR,DDIR,EX:STRINC[321
DIN NUSER:rWTECER
DIN OUSER^OPATH.IPATN.PaOCADO, I, N: INTEGER
DIM OPASS, NPASS, TPASS, NAME, PFILE, TFTLE : STRING[32]
DIM OKAY: BOOLEAN
ON ERROR GOTO 10
(• These file name ulll need to be changed to fit another system
PFILE--/V0/SYS/PASSWORD-
TFI1X— / VO /SYS/ P ASSTEHP "
IPATH-0
OPATH-0
OOSER-0
HOSER-4
0KAY-FM.SE
1-0
OPASS-" "
KPASS-"f
{• get user number from process descriptor and change to user
RUN userld (OOSER, NOSER1
(* liave all Input converted to uppercase
SHELL t/node .1 upc-
[■ get user Information from the terminal
MQU I<4 AND TPASSONPASS DO
(• turn on echo of user name
SHELL "tsode .1 eclio*
INPUT "WHAT IS YOUR USER ID MAKE? •.NAME
(■ turn off echo of password data
SHELL "tmude .1 -echo*
INPUT "WHAT IS YOUR OlD PASSWORD? *, OPASS
INPUT -ENTER HEW PASSWORD PLEASE. ", NPASS
INPUT "OJrtfl IT ONCE MORE PLEASE. ".TPASS
IF TPASSONPASS THEN
PRINT
PRINT "THE SECOND TOE WASN'T THE SAME*
ENDIF
IF OPASS-WASS THEN
PRINT
PRINT •CAN'T USE THE OLD PASSWORD AGAIN"
TPASS-4JPASS*"*"
ENDIF
I-I»l
oidwhile
IF I>-4 THEN
PRINT
PRINT "CHECK YOUR INFORMATION AND START AGAIN"
ERROR 56
EKDIF
(• Copy the password file while looking for match to
(• user name and password
uid;
prl; *,
"+TF1LE+* password"
05 9F CREATE »0PATK,TF1L£:UPDATE
0SAB OPEN 4IPATH, PFILE: READ
0587 WHILE NOT(EOF(»IPATH|) DO
05C2 INPUT *IPATH,unaa>,pswd,uid,prl,XDI!t,DDia,EX
05E4 IF u/van-HAME AND pmd-OPASS THEN
0MD pewd'^PASS "-" °" Ul*WSER THEN
0615 OKAY-TRUE
061B ENDIF
061D ENDIF
061F PRINT IOPATH,unam; *,-; pswd; -
0659 EMONHILE
065D CLOSE 4IPATH
0663 IPATH-0
066A CLOSE 40PATH
0670 OPATH-0
0677 DELETE PFILE
067C SHELL "attr "+TFILE*" -pr;R£NAME
06M
06A9 (* if no match found, print message
06CC IF HOI [OKAY) THEN
06D6 PRINT "THAT IS NOT YOUR USER ID. PASSWORD NOT CHANGED"
0708 ENDIF
070A {* fix tjmlrul output
0720 SHELL -tmode .1 -upc echo"
0736 END
0738
0739 (* handle errors
0749 10 N-6RR
0752 IF NOO THEN
07SE PRINT
0760 PRINT -ERROR > ".- N
0773 PRINT "NO OUNCES HADE-
0786 PRINT
0788 ENDIF
078A IF IPATHOO THEN
0796 CIASE flPATH
07 SC ENDIF
079E IF OPATHOO THEN
07AA CLOSE tOPATH
07BO DtLCTE TFILE
07BS ENDIF
07B7 SHELL "tirote .1 -upc echo"
DDIR; *,"; EX
PROCEDURE USERID
BA5IC09 callable subroutine to got/change csller's USER ID.
Syntax:
RUN userld <oldld,newld) Where oldld and neuld are inteoer
variables and neuld Is optional if change Is wanted.
fSsuser set Sic define system call
vers set 1 version number
type set sbrtn«objct
rev set roanttl
i
mod uidend, uldnasc, type, rev, uidstrt,0
If pi
use /dl/elektra_defa/oa9defs
endc
K
3
r
3
uidname fci /userld/ module name
f cb vers
t
* define stack areas
*
org
return rab 2 subroutine return addrs
count rob 2 I of parms passed from BASIC09
olduld zmb 2 addr of 1st para
oldslz rob 2 byte count of 1st para
newuld rmb 2 addr of 2nd pain
news It rnb 2 byte count of 2nd para
uidstrt ldd count, s any parms?
bag ulderr problem
ldd oldslz, s vlll user nun fit?
cnpd 42 must be Integer
bne ulderr problem
os9 fSld sys call for procld and userld
sty [olduld, s] put userld away
ldd count, s how many parms?
decb
bag uldrtn need only return old uld
ldd newslt.s
cnpd 42 must be Integer
bne ulderr
ldy [ibewuld,s] get new user number
os9 fSsuser set new user Id
uldrtn rts
*
* paianvter error return
*
ulderr comb set carry
ldb 456 parameter err number
rts
enod
uldend egu -
end
Ml crow
- OS-9
00001
00002
00003
00004
0000S
00006
00007
00008
00009
00010
00011
00012
00013
00014
0001S
00016
00017
oooie
00020
00021
re 05-9 Assembler 2.1 08/16/87 12:46:53
System Symbolic Definitions
PROCEDURE USERID
BASIC09 callable subroutine to get/change caller's USER ID.
Syntax :
RUN userld (oldld. newld) Mere old Id and newld are Integer
variables and newld Is optional If change Is wanted.
001C
0001
0021
0081
0000 870)0043
fSsuser set Sic define system call
vers set 1 version number
type set sbitn+objct
rev set reenttl
mod uidand.uidnaw. type, rev, uidstrt,
lfpl
/d0/defs/os9defs
endc
00022
00 0D
75736572
uldnaoe
fcs
/userld/
nodule name
00023
0013 01
fee
vers
00024
•
0002S
* define stack sreas
00026
*
00027
D 0000
org
00028
0000
return
rob
2
subroutine return addrs
00029
D 0002
count
rab
2
4 of parms passed from BASIC09
00030
D 0004
olduld
rnb
2
addr of 1st parm
00031
D 0006
oldslz
rab
2
byte count of 1st parm
00032
D 0008
newuld
rob
2
addr of 2nd parm
00033
D OOOA
newslz
rmb
2
byte count of 2nd parm
00034
*
00035
0014
EC62
uldstrt
ldd
count, s
any parms?
00036
0016
2724
bag
ulderr
problem
00037
0018
£C66
ldd
oldslz, s
will user num fit?
00038
00 1A
10830002
cwpd
42
must be Integer
00039
001£ 261C
bne
ulderr
problem
00040
0020
103F0C
os9
fSld
sys call for procld and userld
00041
0023
10AFF804
sty
(olduld. s]
out userld away
00042
0027
EC62
ldd
count , s
now many parms?
00043
0029
5A
decb
00044
002A
270F
beg
uldrtn
need only return old uld
00045
002C
EC6A
ldd
newsiz,s
00046
002E
10830002
ovd
42
must be Integer
00047
0032
26DB
bne
ulderr
00048
0034
10AEP808
ldy
[newuld. s
get new user nimber
00049
0038
103F1C
os9
fSsuser
set new user Id
00050
0039
39
uldrtn
rts
00051
■
00052
* parameter error return
000S3
•
00054
003C
53
ulderr
comb
set carry
000S5
003D C63B
ldb
456
parameter err msrtoer
00056
003F
39
rts
00057
0040
7B2D59
enod
00058
0043
uldend
egu
»
00059
end
00000 error Is)
Page 001 00u00 ^mingis)
$0043 00067 program bytes generated
SOOOC 00012 data bytes allocated
EOF
SB
M
rO
FOR THOSE WB
H NEED TO KNOW
68 MICRO
JOURNAL
TW
The "Grandfather of
Desk Top
Publishing"
Rambllngs
&
What-not...
^ The Editor's
Place to Comment!
Have you ever read something and gotten the
feeling that you wanted to get up and spit? Well. I
did while catching up on my reading a little earlier
this evening. Actually yesterday evening as tt Is
now Into the wee hours of the next day.
First. I ran across a Tandy ad that caught my
eye. Why? Because it repeats a myth 1 have seen
them recite in print previously.
"In 1977, we became the first company 10 successfully
(italics ours) manufacture and market a personal computer -
nobody's been in the business longer." f Tandy)
As thousands of us know - Bull Hockey! Not so!
While Tandy and their Radio Shack stores
were floggin' off CB's. stereos and other non-dlgl-
tal stuff, there were several domestic companies
manufacturing peisonal computers (?)-whatever
personal computer (PC) means — and successfully
advertising and marketing them world-wide! Most
all of us remember a few like MITS. SWIPC (still in
there beating the bushes). Sphere, etc. Actually
there were other brands that were manufactured
and sold while the guys who wrote those dumb ad-
vertising copy lines were still "tinkling" in their pin
onst However, to sorta look halfway honest they
slip in a more or lessword like "successfully". So to
be "real" I guess you have to achieve a certain
degree or level of 'successfully ". Little guys don't
count.
As I see tt. some are starting to puff and spout
things like, "we were first" or "we started it all",
klnda ballyhoo. However, if you're going to shoot
from the hip you certainly should have some . how-
ever slight, basts In fact. or. as ray Western friends
would say-"diy powder and hard lead". Without
that you're Just dumping vapor-fcucUs}". take note,
another new word I Just invented. You can tell
eveiyone you know you saw It here first! And
maybe last...
No denying Tandy has made pretty big waves
In the micro world. They have flogged off some
pretty neat things, computers and what-not. But
they don't need to try to "bull" us. We appreciate
them for what they are. not what someone else is.
or was.
About the PC word pait I don't know. PC was
being used long before Tandy ever sold their first
micro-computer. However, as to being lhe first,
well, that's a pretty big bunch of vapor- fact(s) to be
dtshlng out to some of us who can remember
when— and who! A lot of folks have been In the
business considerably longer!
After re-reading the above comments I am
beginning to like my new word 'vapor-fact(s)".
Can't seem to let It go. So guess 111 let you In on
another prime example of vapor-fact(s).
Seems Apple, not to be outdone, also likes to
trot out a vapor-fact(s) eveiy now and then. Ex-
ample, a recent Apple two page advertising spread
said. In part:
"despite lhe acclaim we received for having created
(italics ours) desktop publishing..." (Apple)
Now how 'bout them beans? Apple created
desktop publishing like Columbus discovered hot
chocolate. M&M's and Hoola Hoops! However, it Is
a fact. Apple sure did more than about anyone else
In the improvement department! And that Is the
truth of It-Apple has done more than all others
combined to make tt a better process, but create
tt.. .never!
Now as most of you know, we published In 68
Micro Journal, back In the late 70's, that we did
and would continue to publish 68 Micro Journal
only with the same type computers you could buy
as a personal computer (?). and those we pub-
lished articles about. Nothing has changed since
then.
26
OcttAer'87
'68' Micro Journal
That being the facts. "68 Micro Journal was
the first product of what Is known now as desktop
publtshtng." That being not a "vapor-fact(s)".
But wait 'whalis desktop publtshtng?'. I ask?
Nobody here In these wee houis except Charlie.
Buster and myself. Charlie being the typical
poodle pays little attention to such mundane
topics of conversation and Buster, a young but
lazy torn cat. sleeps all the time and wouldn't hear
a PC hit the floor if dropped from 20 feet, and
crashed a foot from his head. So I guess I will have
to give you the real answer, rather than have you
ponder It to some unlikely conclusion.
'Desktop publtshtng' Is publishing done on
a desklopl
Right? Right!
Well, sorta.
Not to be confused with publishing done on the
floor (large, expensive hard to program machines
that take up the better part of an average room, or
more, and stt on the floor of course) We got one of
'em also.That. I guess. Is floor-top publishing. Or
maybe Just floor publishing. Doesn't sound too
glamourous so 1 guess thats why they never called
It anything but Just plain old 'publishing." And
nobody seems to really caie about that claim of
being first, unless we go back several hundred
years. Also one wouldn't or at least shouldn't con-
fuse desktop publishing with "deskdrawer pub-
lishing", a word heard every now and then. That.
I Imagine, is where you would publish with some-
thing that slides Into a desk cubicle or drawer.
However, that doesn't seem to qualify either. Hard
to get man (or lady) and machine In there.
We could really dig Into this thing, for a long
time to come, with all sorts of claims like the first
to do "no pencil publishing", or how about "bath-
tub publishing?" Bet no one has thought of that
yet. Or "one person publishing" would have been
much better. And as we get more Into digital pub-
lishing, that ts. direct from Input to the piess
plates (actually coming soon), then someone will
probably call it "digital publishing." Pretty simple,
huh? Once you understand how to figure it.
When we sift through the whole mess It still
bolls down to a pretty simple solution, "desk-
top publishing" is done on an imagi-
nary desktop! Or to be more precise, in
an area much, much smaller than tra-
ditional "floor" publishing. I know that's
too slmpliiled. however. It was an expression to
denote the entire process cou Id be done In a space
FOR THOSE WH
or area so small as to be unheard of at the time
it came Into being. Even so compacted as to get
everything on the average desktop. Now. that was
something to crow about. I ought to know, I was
publishing a newspaper with traditional floor
publishing. And I was determined that this new
technology would fulfil) it's promise. At least for
me. For that reason, and of course, the econom-
ics of everything In a small size (comparative), one
man (lady) easily manipulated system. I started
66 Mtcro Journal. In part, to show it could be
done. That meant designing and building the nec-
essary hardware and writing the original soft-
ware, because none was commercially available
at that tlme-NONE! Whtle the technology has ad-
vanced In qu antum leaps . In comparison, what we
had when I started and what we have available
now, pales in the comparison of where the first
"Wright Flyer" was technically and the present
day space shuttle technology. But, still the space
shuttle has as it's roots, the Wiight Fryer. As
concerns what we now call "desktop publishing",
we didn't give it it's name, we Just gave it btrth.
Others occasionally tiy to make that into some-
thing else. Oh. well.
All along the title or name actually should have
been— 'electronic publishing'. That is actually
what the difference Is. electronic as opposed to
non-electronic or partial electronic. With a simple
name like that nobody would want to tarnish their
reputation by risking getting caught trying to lay
claim to someones else's efforts. Although 1 sus-
pect some of those other good old boys would stUl
maybe give ft a try.
So we. 68 MtcroJoumal. by vtrture of truth and
proof, are acknowledged to be the first Teal " prod-
uct of 'desktop publishing', and The fountain-
head from which U sprang". 'Granddaddy' or
"Father" of desktop publtshtng. to the less romantic
of you. That and a cou pie ofbu cks will get you a cup
of coffee In a lot of places.
Now. let's Just sit around and see who tries to
rip off that "fountain-head" stuff. Remember. If all
this seems like garbage, well, did you ever hear of
"vapor- fact(s)" before?
Gotcha there...!
68 MICRO
JOURNAL
TM
'68' Micro Journal
October -87
27
r ^
I
tvjat:-wau;n
68 MJ
The Macintosh Section
Reserved as a
A place for your thoughts
And Ours
Mac-Watch
ightning strikes, thunder echoes,
Taunting music plays, the drawbridge
creaks open, and you enter the fast-
paced, high adventure woild of Dark
Castle, the arcade-style game from Sili-
con Beoch Software,
With graphics better than most arcade
games, you run, jump, climb, and swing
your way through fourteen separate
rooms, each of which offers different
challenges: gargoyles, mutants, dragons,
guards, bats, wizards, and fireballs, to
name only a few. Ihe graphics are so
intricate and smooth-flowing that the pris-
oners being whipped by the dungeon's
torturer turn their heads to watch as you
pick up a mace and duel with the hench-
man.
The object of Dark Castle is to make your
way through the four castle areas gather-
ing rocks, elixir, shields, and fireballs with
the ultimate goal of toppling the Block
Knight. Unlike text adventures which re-
quire you to begin at scene one and
move progressively, Dark Castle allows
you to choose among four doors, each
with a wide variety of adventures.
This is probabty the best graphics & sound
of any Macintosh program now available
it has to be seen to be believed! dm*
Rom the Great Hall where each round
begins. Door One leads to "Trouble*
rooms 1,2, and 3. Vou go into the depttis
28
October's?
'68' Micro Journal
• telephone: (615)342-4600 Soiltfl 'East Media
Tele*: SW60066M
OS-9, Wii'jULX. 1 L-LX, S'K'WS
SO'/Tl l ? A'-K%
"■' I'U i in 1 </'• ■cifii '\iiii tifYniiititjSiistCM amt "JiiskSUc !!!
Sculptor
Full OEM & Dealer Discounts Available!
THE SCUJTOR SYSTEM
THE PACKAGE
11 i ■ J ■
DATADKmONAHY
hMfaftfeM W It*
ITCCXINC TK>ff«QUE
■ ktHndnb
fnbwidhr
REIATICWAJ OPERATORS
EaMfM
Lnt
AN EST AW JSHEf) LEADER
■ i ft iM ■ ifrl ■* IIIII W ■ Hi J Willi I M ■!*>■■ iJH i l l J Ffl
,i IW. .1
□ thuHM
fit
Facia
Features
SYSTEM INDEPENDENCE
K **!*•* * I EMM*
AFFIXATION PORTABUTV
hitm and *4iw rtrv-fciim ^4 «t
SPEED AND EflTCJENCY
Scutp*ji uh* * «MI and prawn *ri
V^ipan i tour* garwnflnrt -wauaap ■ ranptad lr> a
c a n aa t l Wwf»«jday»tpd-'«caih iw ib i < »« T it-^*i***
JNTERNATIONALLV ACCEPTED
BmUrnatW-jarc J ■» * ■■ WHy Vwl.
■mm n #h lanpiagw a*d lanya *-)«•« T-«fLar-
m ■nlMmiiliHia pfraaw ifcmfcfiiMHafci
a w *** * * liinatl ■* n il i ■"uV"-Ty»«nrif n-npa
- So*"" » atoaa-V "I ■*■* ■
I fcajtr*
DATA FILE STRIJCTURE
INPUT DATA VALUATION
! i >■■*■ -n i ■rfudattria -inury
■ W^ajwrw ••did to^t
ARTTHMCTIC OPERATORS
Umw
spf cm features
Echo
Sculptor fur 68020
OS-9 & UniFLEX
$995
T&ttt MMtftti)lp
MAXIMA AND MIM* ^l* *
iwbihiM i« tv» ..fEsiisa'*'
P"jrWTk** PriCtVd ■WBj'l ' f\*i* AJLW LlJUl— Ll_ _JJ_L l„.__|
/ \
£U
3 **?
jfi t?i
mwd
[^
HHfl
t
Iiwltr II. t
MauffuniMMnlfart
SCREEN FORM LANGUAGE
PROGRAMS
lift-In* iwi«U*v«Jiit
i I r rMtr m irul#«Nl M*
1 1 **i rnrHi ■mlwil ■ i ■ mw ham
a
I Scram
M#nuim«pMk
torfi ppjfrim il nUfpii
i I * #*y hi c jJ wn |h-< -pam. *il
*
MUSTANG-OaO Users - Ask For Your Special Dbcouni!
Tandy CoCo III Special - Reg. $595 * Special $389 *
• ••
•*•
•
••
•**
MUSTANC-020
$995 $199
$595
PC/XT/AT MSDOS
$595
$119
$595
OS/9 UniFLEX 6809
U U
II
AT&T3B1 UNIX
44
14
14
IBM Compatibles
u it
fl
SWTPC 68010 UniF
$1595
$319
$797
Tandy CoCo III
Special $389.00
SWTPC 68010 UNIX
$1990
$398
$995
... Sculptor Will Run On Over 100 Other Types of Machines ...
... Call for Pricing ...
!!! Please Specify Your Make of Computer and Operating System !!!
* Full IH'vHnpcmrnl Psckxgc
•• Run Tlmt Onlj
••• C Ktj Rk Library
O ■ DM. t . «K*DOS
r-njx.o. lUTua
CO • U» Caw ''I os-*
ccr • caw r i 1 ^ R.EX
l.liE
/SO0 CassauOaSmil/i tf. rtbgon. Tn. 37343
Ttlcphant: (61S) 842-4600 TtivQ S1O6CD6&O
'iWKfrrtird *
•• Shipping ••
UI1*IUX<A B5tl
PttrrffP «<r*a AM 5*
Fmlfx AtaMB A4J 1«*
Or COO. Skif*<aj o<*>
»0»« > ■ TradHMrt «» Mhrai. «i< Waten»»'f1-D( wri UnFIJOt ^. Tr.totiMt» «fT«^t»l !>■■■■ CiMMIMB-^K'Dq* ll » Tr*JwM* iifSlii.K S«T»»rt SfilwCMT,
88' Micro Journal
October '87
29
Telephone: 1615) iS42-4t>lX) SOU tft 'EOS t !Media
Tcfc\: 5Ith(106bM)
OS-9, Itni'JCEX. '/C'LX, SX*®G$
DISASSEMBLERS
SUPER SLEUTH from Computer Systems Consultants Interactive
Dirastem bier; extremely POWER FUU Disk File Binai /ASCII
Examine/Change, Absolute or FULL Disassembly. XREF
Generator, Label "Nunc Clianger", and Filei of "Standard Label
Names" (or different Operating Syitemi.
Color Computer SS-50 Bus (alt wl AL. Source)
CCO (32KRtqd) Obj. Only 149.00
F. S, S99.00 - CCF. Obj. Only IX DO U. HOOOO
CCF, w/Source 199 00 0, S 101 00
CCO, Obj. Only ISO 00
0S9 68K Obj. 1100 00 wtSourue S200O0
DYNAMITE* - Excellent iiwdard "Batch Mode" Disassembler.
Includet XREF Generator and "Standard Label" Files. Special OS-9
option! w/ OS-9 Version.
CCF. Obj. Only HOOOO ■ CCO. Obj. $ 5995
F.S. " " il00.00O.objtcionlyiliO.00
V. m " S30000
PROGRAMMING LANGUAGES
PL/9 from Windmill Micro Systems •• By Graham Trod A combination
Editor Compiler Debugger. Direct source-to-object compUauoD
delivering fast, compact, reentrant, ROM-able, PIC. 8 & 16-bil
Integers A 6 digit Real numbers (or all ical-woild problems. Direct
control over ALL System roourcea. including interrupts.
Comprehensive libraiy support; simple Machine Code interface;
iiep-by-itep tracer (or instant debugging. 500V page Manual with
tutorial guide.
F. S. CCF - H98O0
PASC (nn> SB. Media - A FLEX9. SK*OOS Compiler wiih a definite
Pascal "flavor". Anyone with a bit of Pascal upciience should be
able to begin using PASC U> good effect in short order. The PASC
package comes complete with three sample prog rams: ED (a syntax
or structure wiitor), EDITOR (a simple, public domain, screen
editor) and CHESS (a simple chess program). The PASC package
come complete with source (written in PASC) and documentation.
FLEX.SK'DOS I95JD0
WHIMSICAL f torn SB MEDIA Now supports Real Numbers.
"Structured Programming" WITHOUT losing the Speed and
Control of Assembly l-anguagel Single-pass Compiler features
unified, user -defined I/O: produces ROMable Code; Procedures and
Modules (including pie-compiled Modules); many "Types" up to 32
bit Integers, 6 digit Real Numbers, unlimited sized Arrays (nam
only); Interrupt handling; long Vaiiable Names; Variable
Initialization, Include directive; Conditional compiling; direct Code
inscniro: control of the Stack Pointer, etc Run-Tune •ubnxaina
inserted u called duibig compilation. Normally produces 10% less
eodt than PU9.
F.S and CCF -1195.00
KANSAS CITY BASIC (ram S.E- Media -Basic far Color Computer
OS-9 with many new ctmraands and sub-functions added. A full
implementation of the IF-THEN-El.SE logic is included, allowing
nesting to 255 levek. Strings are supported and • subset of the
usual string functions such as LEFTS, RIGHTS. MIDS. STRINGS,
etc are included. Variables are dynamically allocated. Also
included are additional features such as Peek and Poke. A must for
any Color Computer user running OS-9.
CoCo 0S.9 139.95
C Compiler from Wlndrmh Micro Systems b James McCosh. Full C
(or FLEX. SK*DOS except bit-fields, including an Assembler.
Requires the TSC Relocating Assembler if user desires to implement
his own Libraries.
F,SandCCF.S295.00
C Compiler from IntroJ - Full C except Doubles and Bit Fields,
streamlined for the 6809. Reliable Compiler FAST, cffkieni Code.
More UNIX Compatible than roost.
FLEX. SK*DOS. CCF. OS-9 (Uvet It ONLY). U - J575i»
PASCAL Compiler from Lucldata - ISO Baaed P-Code Caspian.
Designed especially for MiotKonpmer Systems. ADowi linkage to
Assembler Code for maximum flexibility.
F.S and CCF 5' - i 19000 F.S 8: J205J00
PASCAL Compiler from OincgeSoft (now Certified Software) - For
the PROFESSIONAL: ISO Based, Native Code Compiler. Primarily
for Real-Time and Process Control applicaiioni. Powerful;
Flexible. Requires a "Motorola Compatible" Relo. Asmb. and
linking Loader.
F. S and CCF - 1425.00 - One Year Maine. HOOOO
OS-9 68000 Version - i900O0
KBASIC ■ from S.D. MEDIA - A "Native Code" BASIC Compiler
which is now Fully TSC XBASIC compatible. The compiler
compiles to Assembly language Source Code. A NEW,
stream! ined. Assembler is now included allowing the assembly of
LARGE Compiled KBASIC Programs. Conditional assembly
reduces Run-time package.
FLEX. SK'DOS, CCF, 0S.9 Compiler /Assembler S99O0
CRUNCH COBOL from S.E. MEDIA - Supports large subset of ANSU
Level I COBOL with many of the useful Ixvel 2 features. Full
FLEX.SK*DOS File Structures, including Random FUei and die
ability to process Keyed Files. Segment and link large programs at
runtime, or implemented at a set of overlays, Trie System requires
56K and CAN be run with a single Disk System. A very popular
product.
FLEX,SK*DOS.CCF -199.95
FORTH from Stearns El ectrooka A CoCo FORTH ^vtyamming
language. Tailored to the CoCol Supplied on Tape, transferable to
disk. Written in FAST ML. Many CoCo functions (Graphics.
Sound, etc.). Includes an Editor, Trace, etc Provides CPU Cany
Flag aaxasibilit y. Fan Task Multiplexing, Clean Interrupt
Handling, etc for the "Pro". Excellent "Learning* tooll
Color Computer ONLY-S58.9S
AralkMtkyt
O. OS-*, J. « •DOS
F.FLEX, U.VUFUX
CO ■ Obr CowpvUr OSt
oct - o»tof empuur rusx
Southeast Media
5900 Cassandra Smtik fJL ■ Jfujcn, In. 37343
** Shipping ••
Add J» IAS-A.C-1". tut)
Fortes Sartau a ad s*
Pantrs Aim. II A 44 1 *%
Or CUM. ShlpplatOnlr
fm-t t»>Tr»a«Mrti l rMkfo«fi»wlMoliin>l..'FI.EX»naL'iiiri.EXsr«Traa«Mrti<itT>tlirJc»l3r«''M r.MM»ll»im ■sK'lxi'i I.. Tf»«ni»r>efat»r-K SaWwara iHwC.
30
October 87
68' Micro Journal
Tcfcpftonc: (6 1 5} $42-4*00 SOU tft %CLS t !Me (fid
Tefaa 5106006630
0S% Uni'JL'EX, '} L'LX, S'K''DOS
FORTHBUILDER is a stand-alone target compter (erosscompiler) for
producing cusiom Focih systems and application program!.
All of the 83-slandard defining words and contiol structures are
recognized by FORTHBUILDER.
FORTHBUILDER is designed 10 behave as much as possible like
a resident Foiih interpreter/ compiler, so that most of the
established techniques for writing Forth code can be used without
change-
Like compilers for other languages, FORTHBUILDER can operate
in "batch mode".
The compiler recognizes and emulates taigcl names defined by
CONSTANT or VARIABLE and is readily extended with
"compile-lime" definitions to emulate specific target woids.
FORTHBUILDER is supplied as an executable command I tie
configured for a specific host system and target processor. Object
code produced from the accompanying model source code is
royalty-free to licensed users.
F, CCF. S • $99.95
DATABASE ACCOUNTING
XDMS from Westchester Applied Business Systems
FOR 6899 FLEX.SK»DOS<5/8")
Up to 32 groups/I ields per recordl Up to 12 character tiled namel Up to
1024 byte records! User defined screen and print contrail Process
lilesl Form (ileal Conditional execution I Process chainingl Upward/
Downwaid fde linking I File joining! Random file virtual paging)
Built in utilities! Built in text line editorl Fully session oiienledl
Enhanced form si Boldface, Double width. Italics and Underline
supported I Written in compact structured aatemblerl Integrated for
FAST execution!
XDMS-IV Data Management System
XDMS-IV is a brand new approach to data management. It not only
permits users todescr be, enter and retrieve data, but also to process
entile files producing customized reports, screen displays and file
output. Processing can consist of any of a set of standard high level
functions including record and field selection, sorting and
aggregation, lookups in other files, special processing of record
subsets, cusiom report formatting, totaling and subtotaling, and
presentation of up to three lelated files as a "database" 011 user
defined output reports,
POWERFUL COMMANDS!
XDMS-IV combines the functionality of many popular DBMS software
systems with a new easy to use command set into a single integrated
package. We've included many new features and commands
including a set of general fde utilities. The processing commands
are Input-Proceas -Output (IFO>orienle which allows almost instant
implementation of a process design.
SESSION ORIENTED!
XDMS-IV is session oriented. Enter "XDMS" and you are in instant
com maud of all the features. No more waiting for a command to
load in from disk! Many conunands are immediate, such as
CREATE (file definition). UPDATE (file adilor), PURGE and
DELETE (utilities). Others are process commands which arc used to
create a user process which is executed with a RU N command.
Either may be eniacd into a "process" file which is executed by an
EXECUTE statement Processes may execute other processes, or
themselves, either conditionally or unconditionally. Menus and
screen prompts are easily coded, and entire user applications can be
run without ever leaving XDMS-IV
ITS EASY TO USE!
XDMS-IV keeps data management simple I Rather than design a complex
DBMS which hides the uue nature of the data, we kept XDMS-IV
file oriented. The user view of data relationships is ptesented in
reports and screen output, while the actual data resides in easy to
maintain files. This aspect pcimits customized presentation and
■epoiU without complex redefinition of the database files and
structure. XDMS-IV may be used for a wide range of applications
from simple record management systems (addresses, inventoiy ...)
to integrated database systems (order entry, accounting...)
The possibilities are unlimited
FOR 6809 FLEX-SK»DOS(5/8") $249.95
ASSEMBLERS
ASTRUK09 from S.E. Media - A "Structured Assembler for the 6809"
which requires the TSC Macro Assembler.
F. S. CCF - $99 95
Macro Assembler Tor TSC - Ihe FLEX, SK'DOS STANDARD
Assembler.
Special - CCF SHOO; F.S $50 DO
OSM Extended 6809 Macro Assembler from Lloyd I/O. - Provides local
labels, Motorola S-records, and Intel Hex records; XREF.
GeneOrate OS-9 Memory modules under FLEX, SK'DOS.
FLEX. SK'DOS. CCF. OS-9 199.00
Relocating Assembler/Linking Loader from TSC. -- Use with many of
the C and Pascal Compilers.
F. S. CCF $150.00
MACE, by Graham Troll from Windrush Micro Systems - Co-Resident
Editor and Assembler; fast interactive A.U Programming for small
to medium-sized Programs.
F.S. CCF- $75 M
XMACE - MACE w/Cross Assembler for 680071/2/3/8
F.S. CCF- $9800
.MillablllLj I »t«ndi
o.os.r. s.sooos
F>n.IX,U>UBIFI.EX
CC» - Color Gonipiiltr 054
CCF. Color Computer FLEX
South 'East 'Media
5900 Cassandra Smith 9/. - Dfvffon, Tn. 37343
•• Shipping ••
AddJ» USA.(mio.IlM)
Fortlea SurfKr AM S*
Fortlcn Al<n»ll Add 1<«
Or CO.D. Shipping Onlj
*OS-*l»»Tn8>Ti«r1inrMkr"»ir ( indMni"fMtj.»n.EX 'nil thin. EX »rr Tr»dmurttnrTtchfilt»l Spuria CaaaiU»iru.*SIC' DOS lnfnd.rn.rt of sur K Sarlwiri S.K.rml'nrp.
'68' Micro Journal
Odober"87
31
Tcfcphonc: (615) 842-4600 SOU tft 'EClS t Media
TeklC. 5106006630
OS-9, Wri'JVEX, ') L'LX, SX*4>QS
UTILITIES
BaskW XRef from S.E, Media - Thi» BtiicOT Crow Reference Utility
ii a Dui<09 Piogrtm which will produce a "pretty piinled" lilting
with each line numbeicd, followed by a complete cro» referenced
lilting of all variables, external procedure*, and line rajmbcn called
Alio includei a Program Liu Utility which ournuu a fan "pretty
printed" lilting with line number*. Require* B*iic09 or RunB.
O A CCO obj. only ■■ $39.95: W Source ■ $79.95
HTrec Routine! • Complete act of routine* to allow limple
implement* lion of keyed file* • for your programs - running under
Ba*ic09. A ical lime »aver and should be a pari of eveiy sellout
programmer* tool -box.
A CCO obj. only ■ $89.95
Lucldata PASCAL UTILITIES (Require* Pascal ver 3)
XREF •• produce a Cros* Reference Lilting of any tut; otienied to
Pascal Source.
INCLUDE - Include other Files in a Source Text, including Binaty -
unlimited nesting.
PROFILER - prov idea an Indented. Numbered. "Suuoog ram' of a
Pascal Source Text Flic; view the overall structure of luge
programs, program integrity, etc Supplied in Pascal Source Code;
requires compilation.
F. S. CCF .« EACH 5" - $40 M. 8' - ISO DO
DUB from S.E. Media - A UnlFLEX BASIC Decompiler Re-Creaie a
Sourtr Lining from UniR£X Compiled baiic Program*. Works
w/ AU. Versions of 6809 UniFLEX baric.
U - $219.95
LOW COST PROGRAM KITS from Southeast Media The following
till are available for FLEX, SK*OOS on either S" or 8" Disk.
1. BASIC TOOL-CHEST $29.95
BUSTER. CMD: pretty printer
LINEXREF.BAS: line crots-referencer
REMPAC.BAS. SPCPACBAS. COMPACBAS:
remove *uperfluou* code
STRIP BAS: auperlluous line numbers stripper
2. FLEX, SK»DOS UTILITIES KIT $39.99
CATS. CMD: alphabetically-sotted directory listing
CATD.CMD: dale-tonad diiectoty lilting
COPYSORT.CMD: file copy, alphabetically
COPYDATE.CMD: file copy, by date-order
F1LEDATE.CMD: change file creation date
bNFO.CMD (A INFOGMX.CMD): tells disk attribute* Acontenls
RELINK.CMD (A RELINK82): rc-ordcr* fragmenta) free
chain
RESQ.CMD: undeletes (recover*) a deleted file
SECIORS.CMD. show leaor order in free chain
XL.CMD: super text lister
3. ASSEMBLERS/DISASSEMBLERS UTILITIES
$39.95
UNEFEED.CMD: 'modulaiise' disassembler output
MATII.CMD: decimal, hex, binaty, octal conversions
A uble*
SKIP.CMD: column suipper
4. WORD - PROCESSOR SUPPORT UTILITIES
$49.95
FULLSIOP.CMD: checks for capiialization
BSTYCIT.BAS (.BAC): Stylo to dot-matrix prinlerr
NECPRINT.CMD: Stylo to dot-matrix prinler riltercode
5. UTILITIES FOR INDEXING $49.95
MENU.BAS: selects required program from list below
INDEX.BAC: word index
PHRASES. BAC: phraie index
CONTENT.BAC: table of conlenti
1NDXSORT.BAC: rati alphibetic son routine
FORMATERBAC: produce* a 2 column formatted index
APPEND.BAC: append any number of fiki
CHAR BIN: line reaAr
BASIC09 TOOLS consist of 21 subrcuinu forBasic09.
6 were written in C Language and the remainder in alterably.
All the routine* are compiled down to native machine code which
make* them fast and compact.
1. CFILL - fill* a tiling with diaraaeri
2. DPEEK •• Double peek
3. DPOKE - Double poke
4. FPOS - Qirreni file position
5. FSIZE - File size
6. FTRIM - remove* leading space* from a siting
7. CETPR — returns the current process ID
8. GETOPT - geu 32 byte option taction
9. GETUSR -- geu the u*er ID
10. CTIME •• gets the time
11. INSERT •• insert a string into another
12. LOWER - convert! a string into lowercase
13. READY - Checks for available input
14. SETPRIOR -- changes a process priority
15. SETUSR - change* the user ID
16. SETOPr - act 32 byle option packet
17. STIME - sell the lime
18. SPACE - adds space* to a string
19. SWAP - swap* any two variables
2a SYSCALL - system call
21. UPPER — convert* a tiring to uppercase
For OS 9 - $44.95 - Include* Source Code
See Review in January 1987 ittue of 68 Micro Journal
o • os.*, s • sx>ooi
r.FLEX.U.UalFLU
CCt . CM* Omftrr OS.*
tXT • Cokjr Canpvk* rut X
•Of.* h aTnnkm.ni »fMkn
South Tost Media
5SO0 Cassandra. Smith %£. - yfvfsan, Tn. i 7343
*• Shipping ••
KM I* USA. (rain. JUS)
ForitXB Surfm Adas*
ForrftJi AJrm.lt Ao» 11*
Or CO.D. Shtppltt* Oalj
I M.ttn™i».n-T>:x .ml Ininn >r< T>.d.m.r> < »tT»c>Hilf.lSriuiin OniiilUtiito-'SK'POS InTrnUmrtiif Sur -K S.Hwir« Si+mir<*t.
32
October '87
'66' Micro Journal
Telephone: (til?) $42-4600 SOU tft ILOS t tMeditl
Tele*;: 510bOObbM)
05-9, Uni'JL'EX, 'J LLX, $'K*'DQS
SOFTOOLS
Hie following programs ire included in object form for immediate
application. PL/9 aource code available for cuncmization.
READ-ME Complete innrmjoni for initial letup and operation. Can
even be piinied out with the included tut processor.
CONFIG one lime system configuration.
CHANGE changes words, characters, etc. globally to any text type file.
CLEANTXT converts tal files to standard FLEX, SK'DOS files.
COMMON compile two text flics and icports differences.
COMPARE another check file that reports mis-matched lines.
CONCAT similar to FLEX. SK'DOS append but can alto list Hies to
screen.
DOCUMENT for PIJ9 source files. Veiy useful in examining parameter
passing aspects of procedures.
ECHO cchos to either screen or file.
FIND an improve find command with "pastern" matching and wildcards,
Veiy useful.
HEX dumps files in both hex and ASCII.
INCLUDE a file copy program that will accept "includes" of other disk
Filet.
KWIC allows totaling each word, on each line to the beginning. Very
useful in a sort program, etc.
L1STDIR a dircctoiy listing program. Not super, but better than CAT.
MEMSORT a high-speed text file sorter. Up to 10 fields may be sotted.
Very fast. Veiy useful.
MULTICOL width of page, number of columns may be specilied. A
MUST!
PAGE similar to LIST bin allows for a page header, page width and
depth. Adjust for CRT screen or ptinier as set up by CONFIG. A
veiy smart print driver. Allows pi inter control commands.
REMOVE a fast file deleter. Careful, no prompts issued. Zap, and its
gonel
SCREEN a screen listing utility. Word wraps text to lit screen. Screen
depth may be altered at run time.
SORT a super version of MEMSORT. Ascending/descending order, up
to 10 keys, case over-tide, sort on nth woid and sort on characters if
flic is small enough, sorb in RAM, If large file, son is constrained
to size of your largest disk capacity.
TPROC a email but nice text formatter. This is a complete formatter and
has f unci ons not found in other formatters.
TRANSLIT sons a file by x keyfields. Checks for duplications. Up to
10 key files may be used.
UNROTATE used with KWIC this ptogram reads an input Tile and
unlolds it a tine at a time. If the file has been sorted each word will
be presented in sequence.
WC a woid count utility. Cut count woids, characters or lines.
NOTE: Ibis set of utilities consists of 6 5-1/4" disks or 2 8" disks, w/
source (PL?). 3 5-1/4" disks or 1 8" disk w/o source.
Complete set SPECIAL INTRO PRICE:
5-1/4" w/souice FLEX - SK'DOS • $129.95
w/o source - S79.95
8" w/sourct - $79.95 - w/o source $49.95
FULL SCREEN FORMS DISPLAY from Computer Systems
Consultants •- TSC Extended BASIC program supports any Serial
Terminal with Cursor Control or Memory-Mapped Video Displays:
substantially extends the capabilities of the Program Designer by
providing a lable-dtiven method of describing and using Full Screen
Displays.
F, S and CCF, U ■ 17500, wi Source ■ 15000
SOLVE from S.E. Media - OS-9 levels I and U only. A Symbolic
Object/Logic Verification & Examine debugger. Including inline
debugging, disassanble and assemble. SOLVE IS THE MOST
COMPLETE DEBUGGER we have seen for the 6809 OS-9 series 1
SOLVE does it all! With a tich selection of monitor, assembler,
disassembler, environmental, execution and other miscellaneous
commands, SOLVE is the MOST POWERFVJ L toolkit item you
can own 1 Yet, SOLVE is simple to use! With complete
documentation, a snapl Evetyone who has ordend this package has
ravcdl See review • 68 Micro Journal • December 1985. No 'blind'
debugging here, full semen displays, rich and complete in
information prcscnud. Since review in 68 Micro Journal, this is our
fastest mover!
Levels / A II only - OS-9 S69.9S
DISK UTILITIES
OS-9 VDIsk from S.E. Media - For Level I only. Use the Emended
Memoty capability of your SWTPC or Gimix CPU card (or similar
format DAI) for FAST Program Compiles, CMD execution, high
speed inter-process communications (without pipe buffers), etc. -
SAVE that System Memoty. Virtual Disk size is variable in 4K
incrcOments up to 960K. Some Assembly Required.
Lew// OS-9obj.S79.95;wtSourc» J/49.95
O-F from S.E Media - Written in BASIC09 (with Source), includes:
REFORMAT, ■ BASIC09 Ptogram that lcformals a chosen amount
of an OS-9 disk to FLEX. SK*DOS Format so it can be used
noimaily by FLEX, SK'DOS; and FLEX, a BASIC09 Ptogram that
does the actual read or write function lo the special O-F Transfer
Disk: user-friendly menu dr ven. Read the FLEX, SK*DOS
Dircctoiy. Delete FLEX. SK'DOS Files, Copy both directions, etc.
FLEX, SK'DOS users use the special disk just like any other FLEX.
SK'DOS disk
O . 6809/68000 S79.95
LSORT from S.E. Media - A SORT/MERGE package for OS-9 (Level I
A H only). Sorts tecoids with fixed lengths or variable lengths.
Allows for either ascending or descending son. Sotting can be done
in either ASCII sequence or alternate collating sequence. Right, left
or no justification of data fields available. LSORT includes a full
set of comments and errors messages.
OS-9 J8S.0O
AnlbMft) L<tna>
O. 03AS.SK -DOS
r . ntx, u . imsto
CCI ■ 0*» Conrutrr OS-»
CO» • Color Contwur FUCK
South Tost Media
5900 Cassaiuim Smith "H- • Jfaifon. In. 37343
•• Shipping ••
Add i* itsj*. (aua. *».»»>
Fwilm Swrioa Ada 5*
Forties Alrs.ll Add 10*
Or C.O.D. fihlpplne Only
*ra.«liiTrmdfm»rHirMlcr[CTrt ind vliiiwoli.tl.tX ind UnlFlE*. trt Tri or mi r > I nt Tteb nttil Syru im Cnimilti n ii . -S K *1XK li ■ T ra drn». r » of S a r ■ K Snrtin n Susans Corp.
'68' MtCrO Journal
October's?
33
Tekphom- : (M 5) $424600 Sotltfl TLOS t Media
TefeK; 5108006630
OS l l ilni'JULX, 'JOEX.S-JC'VOS
HIER from S.E. Media -HIER is a modem hierarchal storage system for
users under Fl£X. SK*OOS. It answers the needi of those who
have hard disk capabilities on ihcir lyitemi, or many files on one
disk -a ysin. Using HIER * regular (an?) FLEX, SK'DOS
disk (8 - 5 - hard disk) cm have sub directories. By this method
the problems of assigning unique Rimes to files is less burdensome.
Different riles with the eucj same name may be on the same disk,
as long as they are in different directories. For the wuxiesirr user
this becomes a must. Sub-directories are the modem day solution
that all current laige systems use. Each directory looks to FLEX,
SK*DOS like a regular file, except they have the extension
'.DIR'. A full set of directory handling programs arc included,
makingthe operation of HIER simple and straightforward A
special install package ia included to install HIER to your partial ar
version of FLEX, SK'DOS. Some assembly required- Install
indicates each byte or reference: change needed. Typica ly - 6 byte
changes in source (furnished) and one assembly of HIER is all that
is required. No programming required!
Ft£X - SK'OOS $79.95
COPYMULT from S.E. Media - Copy LARGE Disks to several
smaller disks, FI£X. SK'DOS utilities allow tlie backup of ANY
size dirk to any SMALLER size diskettes (Haid Disk to floppies, 8"
to S", etc.) by simply insening diskettes as requested by
COPYMULT. No fouling with directory deletions, etc.
COPYMULT.CMD tinders lands norma) "copy" synux and keeps up
with fries copied by maintaining directories for both host and
receiving disk system. Also includes BACKUP.CMD to download
any size "random" type lilc: RES1DRE.CMD to restructure copied
"random" files for copying, or recopying back to the host system;
and FREELINK.CMD as a "bonus" utility that "relinks" the free
chain of floppy or hard disk, eliminating fragmentation.
Completely documented Assembly long uage Source files included .
ALL 4 Programs (FLEX, SK'OOS, S" or S") S99.S0
COPYCAT from Lucidata •- Postal NOT required. Allows reading
TSC Mini-FLEX. SK'DOS. SSB DOS68, and Digital Research CP/
M Disks while operating under SK*DOS . FI.EX l.O, FLEX 2.0. or
FLEX 9.0 with 6800 or 6809 Systems. COPYCAT will not
perform miracles, but, between the program and the manual, you
stand a good chance of accomplishing a transfer. Also includes
some Utilities to help out. Programs supplied in Modular Source
Code (Assembly Language) to help solve unusual problems.
F.SondCCFS'-SXDO F.S 8 m -S65D0
VIRTUAL TERMINAL from S.E. Madia ■ Allows one terminal to do
rile work of several. The user may start as many as eight task on one
terminal, under VIRTUALTERMINAL and switch back and forth
between task at will. No need to exit each one; just jump back and
forth. Complete with configuration program. 1 he best way to keep
up with those background programs.
O 4 CCO - obj. only - $49.95
FLEX, SK*DOS DISK UTILITIES from Computer Systems
Consultants — Eight (8) different Assembly Language (w/ Source
Code) FLEX, SK'DOS Utilities for every FLEX. SK'DOS Users
Toolbox: Copy a File wilh CRC Errors; Test Disk for errors;
Compare two Disks; a fast Disk Backup Program; Edit Disk
Sectors; Linearize Free-drain on the Disk; ptint Disk Identification ;
and Sort and Replace the Disk Directory (in sorted order). •• PLUS
— Ten XBASIC Programs including: A BASIC Resequencer wilh
EX1R As over "RENUM" like check for missing label definitions.
processes Disk to Disk instead of in Memoiy, etc. Other programs
Compare, Merge, or Generate Updates between two BASIC
Programs, check BASIC Sequence Numbers, compare two
uniequenced files, and 5 Programs for establishing a Master
Directory of several Disks, and toning, selecting, updating, and
printing paginated listings of these files. A BASIC Cross-Rcferencc
Program, wrinen in Assembly Language, which provides an X-Ref
Listing of ihe Variables and Reserved Words in TSC BASIC,
XBASIC. and PRECOMPILER BASIC Programs.
ALL Utilities include Source* (either BASIC or AL. Source Code).
F.SandCCF -S50 00
BASIC Utilities ONLY for UniFl£X - S30D0
COMMUNICATIONS
CMODEM TelsKcrnrn unications Program from Computer Systems
Consultants. I c. — Menu-Diiven; strpponj Dumb- Terminal Mode,
Upload and Download in non ■protocol mode, and the CP/M
"Modem?" Qirislensen protocol mode to enable communication
capabilities for almost any requirement Written in "C*.
FLEX, SK'DOS. CCF. OS-9. UniFLEX, 68000 & 69091,
Source 1700.00 • without Source tSOOO
X-TALK from S.E. Media - X-TALK consists of two disks and a special
cable, the hookup enables a 6809 SWTPC computer uj dump
UniFLEX files directly to the UniFLEX MUSTANG-020. This is
■he ONLY currently available method to transfer SWTPC 6809
UniFLEX files to a 68000 UniFLEX system. Grmix 6809 users
may dump a 6809 UniFl£X file to a 6809 UniFLEX live inch disk
and it is readable by ihe MUSTANG-020. The cable is specially
prepared wilh internal connections to match the non-standard
SWTPC SO/9 I/O Db25 connectors. A special SWITC S+ cable set
is also available. Users should specify which SWTPC system he/
slie wishes to communicate wilh the MUSTANG-020. The X-
TALK software is furnished on two disks. One eight inch disk
contains S.E. Media modem program C-MODEM (6809) and the
oilier disk is a MUSTANG 020 five inch disk wilh C MODEM
(68020) Text and binary liles may be directly transfeued between
ihe two systems. The C MODEM programs are unalteiad and
perform as excellent modem programs also. X-TALK can be
purchased wilh or without the special cables, but this special prt.ee is
available to registered MUSTANG-020 users only.
X TALK Complete (cable, 2 disks) 199.9$
X-TALK Software (2 disks only) S69.9S
X-TALK with CMODEM Source SH9.9S
a . o*.t, s . sn >dos
r.nxx. L-.uninut
CC*.&kwGi>B»«ur os.»
CO. Color tefakftUI
South ( Last 'Media
5900 Cassandra Smith K£. ■ Xvrfon, Tn. 37343
mastercard
•• Shipping "
A«s 1* Uijt.laUn. 11,9*}
Fonts* SWrsa AM i %
K«tCpi AtnosS AM to*
Or CO Js. Skl»r»ec Out)
1K.1I..Trnljniir>of Mkra-.r.in< MolD.^«>.TI.rX'iMltI»l>1.i:X irt TroSHMffc I «f TjrlllOt »l ■jplMulormilmm.'MCnO'i 1. iTnSmort of SU r.K Soflnort in«wC»>
34
October '87
'68' Micro Journal
TcU'pfumc: (6 1 s) 842 -4bOo Sou tft < Eos t <Media
'Teh*: 5lQbO%630
OS-9. •Uni'JL'LX, f&£X,S%*®QS
XDATA from S.B. Media - A COMMUNICATION Package for the
UniFLEX Operating' System. Use with CP/M. Mam Frames, other
UniFI.EX Systems, etc Veiilict Transmission using chetisum or
CRC; Re-Transmilr b*d blocki. etc
U ■ S299.99
EDITORS & WORD PROCESSING
JUST from SB. Media — Text Formatter developed by Ron Anderson;
for Dot Mum Printer*, provide! many unique feature!. Oitpui
"Formatted'' Text to the Diiplay. Uie the FPRINT.CMD supplied
for producing multiple copies of the "Formatted" Text on the Printer
INCLUDING IMBEDDED PRINTER COMMANDS (veiy useful
at other limes alio, and worth the price of the program by itself)
"User Configurable* for adapting to other Printer! (comet let up for
Epson MX ■80wiihGraflrax);uploten(10)irnbedded "Printer
Control Cotmnandi". Compensate! for a "Double Width" printed
line. Include! the nonnal line width, margin, iodou, para graph,
apace, vertical skip lines, page length, page numbcting, centering,
fill, justification, etc Use with PAT or any other editor.
* Now supplied as a two disk set:
Disk*l; JUSU.CMD object file.
JUS12TXT PL9 source FLEX. SK'DOS - CC
Disk »2: JUSTSC object and source in C:
FLSX.SICDOS.OS9.ee
The JTSC and tegular JUST C source are two separate program!. JTSC
compile! to a version that est peas TSC Word Processor type
commands, (pp .sp .ce etc.) Great for your older text Files. The C
source compiles to a standard syntax JUST.CMD object file. Using
JUST tyntax if ,u ,y etc) With all JUST functions plus several
additional printer formatting functions. Reference the JUSTSC C
source. For thotc wanling an excellent BUDGET PRICED woid
processor, with features none of the other* have. Tliii is it!
Ditk (1) ■ Pl.9 FLEX only. F.Si CCF J49.95
Disk Set (2) F.SA CCF A OS9 (C version) - S69.95
OS-9 6SK000 complete wilh Source . 179 95
PAT from S.E. Media • A full feature screen oriented TEXT EDITOR
with all the ben of "PIE 1 "". For those who iwore by and loved only
Pll;, this is for you! All PIE feature! and much more I Too many
feature! to list. And if you don't like these, change or add your own.
PL-9 source furnished. "C source available soon. Easily
conf gured to yonr CRT, wilh special config section.
Regular FLEX. SK'DOS 1129 50
• SPECIAL INTRODUCnOS OFFER ' 179.95
SPECIAL PATlJVST COMBO iwl source)
FLEX. SK'DOS 199.95
OS-9 6SK Version 1229.00
SPECIAL PATlJVST COMBO 6SK S249M
Notes JUST in *C~ source available for OS-9
CEDRIC from S.E. Media • A screen oriented TEXT EDITOR with
availability of "MENU" aid. Macro defiruliom. configurable
'permanent definable MACROS' • all standaid features and the
fastest 'global' functions in lhe west. A simple, automatic terminal
config program makes lhis a real no hassel' product. Only 6K in
size, leaving the average system over 16S sectors for text buffer -
appx. 14.000 plus off we memory! Extra fine for programming as
well as text
FLEX, SK'DOS 169.95
BAS-EDIT from S.E. Media - A TSC BASIC or XBASIC screen editor.
Appended to BASIC or XBASIC, BAS-EDIT is transparent to
normal BASIC/XBASIC operation. Allows editing while in
BASIC/XBASIC. Supports the following functions: OVERLAY,
INSERT and DUP LINE Make editing BASIC/XBASIC piograms
SIMPLEI A GREAT time and effort saver. Programmers love it!
NO more retyping entires lines, etc. Complete with over 25
different CRT terminal configuration ovcilays.
FLEX, CCF. SK'DOS S19.95
SCREDrrOR 111 from Windrush Micro Systems - Powerful Screen-
Oriented Editor/Word Processor. Almost SO different txaranands;
over 300 pages of Documentation wilh Tutorial. Features Multi-
Cohonn display and editing, "decimal align* columns (AND add
them up automatically), multiple keystroke macros, even/ odd page
headers and footers, imbedded printer control codes, all
justifications, "help" support, store cemm on command series on
ditk, etc Use supplied "set-ups", or remap the keyboard to your
needs. Except for proportional pi inting, this package will DO IT
ALU
6800 or 6809 FLEX, SK'DOS or SSB DOS, OS-9 . 1175 00
SPELLB "Computer Dictionary" from S.E. Media - OVER 150,000
words! Lock up a word from within your Editor or Word Processor
(with the SPHCMD Utility which operates in the FLEX. SK'DOS
UCS). Or check and update the Text after enu y, ADD WORDS to
the Di< lioniry. "Rag" questionable woidi in the Text, "View a word
in context" before changing or ignoring, etc. SPELLB first checks a
"Common Word Dictionary", then the normal Dictionary, then a
"Personal Word Lilt", and finally, any "Special Word Lin" you may
have specified. SPELLB also allows the use of Small Diik Storage
systems.
F, Sand CCF .1129.95
STYLO-GRAPH from Great Plains Computer Co. - A full-screen
oriented WORD PROCESSOR - (utes the 51 x 24 Display Screens
on CoCo FLEX/SK'DOS. or PBJ Wordpak). Full screen display
and editing; supports the Daisy Wheel proportional printers.
NEW PRICES 6809 CCF and CCO ■ J99.95.
F.Sor 0- 1179. 95. U 1299 95
Araiuainir Urr~»>
II.I1V-. <!.\K'tK»i
r . rLt.x, V . ruin rx
Cd . CeX» Oxnauur OS.*
00> . Color Cos-vltr "V*X
South "East Media
S900 Cassandra SmilA !k% ■ "Xbifon, In. 37343
" Shipping ••
Add J» USA. tats. IZ.St)
Fwtlr* SwtM» Add)*
Forties Ablest! Add 10*
Or CO.O. SblpolaK Onlr
1 is.« I. . 1 r.d.m..t (il Mkrn— r« ond Mnlnrat*- ft. T. X and tli.in.Elt »rt Twdnmrln otTKlnilol Sfllt HM OMmlmm-'S K ' DOS l« ■ I ridtra rk ,J sr»p-K Sanwin SfiminCorp.
68' Micro Journal
CXiufjer B7
35
Telephone: (61 5} 842-4600 SoUtft f EOS t 9^C ctia
TcIck: 5106LV663Q
QS-9, -Uni'JL'LX, 'JCLX, S'K*'lh\<
STYLO.SPELL from Great Pbini Computer Co. - Fix Computer
Dictionary. Complements Stylograpli.
NEW PRICES 6809 CCF and CCO - S69 95.
F. S or - S99.95. V . S 149.95
STYLO-MERGE from Gteat P tins Compuier Ca. - Merge Milling
List to "Form" Letters. Piini multiple File*, etc, through Stylo.
NEW PRICES 6809 CCF and CCO . S59.95.
F.SorOS79SS.U-S129.95
STYLO-PA K - Gnfto * Spel) * Merge Packige Deallll
F.SorO ■ 1329.95. U ■ S549 9S
0. 68000 1695.00
MISCELLANEOUS
TABULA RASA SPREADSHEET from Compiler Systems
Consultants - TABULA RASA is similar lo DESKTOP/PLAN;
piovidet use of libulir compuuiion schemes used for imlysis of
business, ules, and economic conditions. Maiu-driven; extensive
report -gene rui on edibilities. Requires TSCs Extended BASIC.
F.Sand CCF. U - SSOOO. wr Source - SI00.00
DYN ACALC - Electronic Spread Sheet for the 6809 Bid 68000.
F. S. OS-9 and SPECIAL CCF ■ S200.00. V . $395.00
OS-9 68K.S595W
FULL SCREEN INVENTORY/MRP from Computer Systems
Consultants - Vte the Full Screen Inventory Systcm/Milcriili
Requirement PUnnin g for maintaining inventories. Keep* iiem field
file in alphabetical order for eaaier inquiiy. Locite ind/or print
records matching partial of complete item, description, vendor, or
attributes: find backorder or below stock levels. Pt int-outi in item
or vendor order. MRP capability for the maintenance ind imlysis
of Kierarchicsl usemblies of items in the inventoiy file. Requires
TSCs Extended BASIC.
F.Sand CCF. U -SSOOO. wi Sourer . S 100. 00
FULLSCREEN MAILING LIST from Compuier Systems Consuhanu
- The Full Screen Milling List System provides i mean of
miinuining simple milling lists. Loose ill records mitching on
partial or complete name, city, sutc, zip, or attributes for Listings or
Libels, etc. Requires TSCs Extended BASIC.
F, S and CCF, V . SSOOO. w/ Sourer - 1 100 00
DIET-TRAC Forecaster from S.E. Media - An XBASIC program thai
plans 1 diet in term s of either catono and percentage of
carbohy dratea . proteina and fits <C P G%) or grams of
Cirbohydrale. Protein and Fit food exchanges of eich of Ihe six
basic food group* (vegetable, bread, meal, skim milk, fruit and fat)
for a specific individual. Sex. Age, Height, Present Weight, Frame
Size, Activity Level and Basal Metabolic Rite for normil individua
are taken into account. Ideal weight and sustaining calories for any
weight of Ihe above individual are calculated Provides number of
days and daily calendar after weight goal and calorie plan is
determined.
F.S -159.95, U S89.95
CROSS ASSEMBLERS
TRUE CROSS ASSEMBLERS from Compiler Systems Coniulunts -
Supports 1 80275. Z-80. 6800/1/2/1/8/1 1/HC1 1. 6804. 6805/HCCS/
146805. 6809/00/01. 6502 fami y. 6080/5, 6020/1/2/3 5/C35/39/ 40/
48/C48/49/C49/50/B748/49, 8031/51/8751. ind 68000 Systems.
Assembler and Listing foimits same is target CPU's form it
Produces midline independent Motoroli S-Text
6*000 or 6809. FLEX. SK'DOS. CCF. OS.9. UniFLEX
any objtel or source each - S5000
any 3 objtel or soura tach - S 100.00
Set of ALL obftd S20000 - wtsourte SS00M
XASM Cross Assemblers for FLEX. SK'OOS from S.E. MEDIA -
This set of 6800/1 /2/3/S/8. 6301. 6502. 6080/5. and ZS0 Cross
Assemblers uses the familiar TSC Macro Assembler Command Line
and Source Code formal. Assembler options, etc. in providing code
for the target CPU's.
Confine set. FLEX. SK'DOS only - S150J0O
CRASMB from LLOYD I/O - Supports Motors a's, Intel's, Zilog's. and
other's CPU syntax for these 8-Bit micropnxxxso rs; 6800, 6801,
6303. 6804. 6805, 6809. 6811 (all varieties): 6502. 1802/5. 8048
family. 8051 family. 8080/85. Z8. Z80. and TMS-7000 family.
Has MACROS. Local Labels. Label X-REF. Label Lengt to 30
Ours. Object code formats: Moioroii S-Records (text). Intel HEX-
Recoids <tcxt).OS9 (binary), and FLEX. SK'OOS (binary).
Written in Assembler ... eg. Very FaiL
CPU TYPE - Price each:
For MOrOROLA
F1.EX9 $150
SK'DOS $150
OS9AS809 $150
OS9/68K
CRASMB 16.32 from LLOYD DO
INTEL
$150
$150
$150
OTHER COMPLETE SET
$150 $399
5150 5399
$150 $399
$432
• Support! Motorola's 68000. and
has same features as the 8 bit version. OS9/68K. Object code
Format illows this cross assembler to be used in developing your
programs for OS9/68K on your OS9/6809 com user.
FLEX. SK*DOS. CCF. OS-9/6809 S249.00
GAMES
RAPIER -6809 Chest Program from S.E. Media -Requires FLEX,
SK'DOS and Displays on Any Type Terminal. Futures: Four
levels of play. Swap side. Point scoring system. Two display
boards. Change •kill level. Solve Checkmate problems in 1-2-3-4
moves. Make move and swap sides. Play white or black. This is
on* of the strongest CHESS programs running on any
mlcrocom puter. estimated USCF Rating 1600* (belter than most
'club' players at higher levels)
F.S and CCF .S79.95
AMliablllirUtmai
u.iis.t, < .sk-mis
r.r\.t\.v-Vnsn.tx
CO.Qter r- il l lhr OS*
ccr.c.
■««
South 'Last 'Media
SSO0 Cassandra Smith 7JL • Mbrscm, Tn. 37343
•• Shipping ••
A Id 1* I VI m!n liJII
Fontffl So/no AM 9*
*W*%p Alnmll Ala It*
Or to jx surfs o«ij
•n.EX 9*4 l."uin.FX ar« TnltmarlK of TvcMcif
test
Ouunutt.*!*:* doc
aiaTnil«w.rlrfSI*r.*:Spft»T« Syariyi Ct**.
36
C3ctuber'87
*66" Micro Journal
'Dajk.Castits
of the castle in quest of a key, fighting
bats, rats, armed guards, and whip crock-
ing henchmen along the way. If you get
the key, you then make your way back out
through the three rooms. Door Two leads
to the four .rooms of the 'Fireball* area.
You battle mutants and vultures, jump on
floating rocks, raft down an underground
liver, then finally climb masonry in an at-
tempt to reach the wizard and gain con-
trol of the fireballs, Through Door Four's
"Shield" area, henchmen throw rocks,
and dragons breathe fire. If you survive
the four rooms, you acquire the Shield and
are zapped back to the Great Hall. Door
Three's targe doors lead you to the Block
Knight area of the caslle with the three
most challenging rooms. The maze like
rope ladders, floating skeletons, and flying
gargoyles are all obstacles which stand in
Ihe way af toppling the block knight, who
hurts his empty ale tankards at you as you
try to pull the ring which will unseat Nm.
You move your realistic 'warrior" through
the castle by using the keyboard with your
left hand: a = left, d = right, s = down, w =
up. Other keys allow the hero to kneel,
jump, and pick up objects. With the
mouse, you can throw rocks and swing the
moce. While this may sound complicated,
with a little practice it is easy even for a
non -typist ta use the keys. However, it is
NOT easy to do well immediately. It takes
proctice ta learn to maneuver through
the various obstacles. In the heat of
'battle" you can miss the *up" key and
get killed. (An option screen allows you to
change the control keys, but the original
configuration seems to work best.) People
without patience may give up in frustra-
tion before they master the skills to pass
through the various rooms.
Ihe biggest surprise with Dark Castle was
the ReaSound™. Actually, I didn't even
know that my Macintosh HAD sound be-
yond the usual beeps until the lightning
- a review
crashed in the opening screen and the
organ began to ptay Vincent Price movie
music. Each room has various sound ef-
fects, including rushing water, bat
squeaks, and a hero who grunts as he
jumps and says *Yeah!" every time he
picks up rocks.
The game has no printed manual, relying
instead on on-screen instructbns. Watch-
ing the disk's three demo rooms helps you
figure out the best way to handle those
rooms, or for even more help, visit your
dealer with a blank diskette and beg for a
copy of the full demo disk, which will also
give you a great idea of the scope of the
entire game.
There are three levels of difficulty, begin-
ner, intermediate, and advanced, insur-
ing that the game can remain interesting
even after long hours of ptay. You score
points by knocking out the various inhabi-
tants of the castle, and you get bonus
points for passing through rooms quickly.
A 'Scores of Merit" screen keeps track of
the top ten players. And should the action
become too intense, the tab key pauses
everything until you are ready to con-
tinue.
With a real arcade game, it takes rolls of
quarters to become proficient, then more
rolls to become expert. The advantage of
Dark Castle is that you pay your 'quartets*
up front, then practice at your leisure. And
hundreds of hours later, the game will stiP
be a challenge (unlike many other com-
puter games). If you eryoy arcode gomes,
and if you have the patience to learn the
game skills. Dark Castle is certainly woith
the investment.
By: Gloria Anchor
DARK CASTLE by Silicon Beach Software
Programming: Jonathan Gay
Design and Graphics: Mark Stephen Pierce
68' Micro .Journal
October^
37
TEXT HACKING
By:
Daniel R. KWoran. Ph.D
Director /Software
Cognitive Engine Corp
34 Atlantic Street
Lynn. Mas»0l9O2
Aie you a Text Haclaa*? Do you get your thrtHs from ma-
nipulating ASCH flies to suit your fancy? More soberly, do you
get stuck fixing up everybody else's Bks that this or that
program chokes on? Then you ate. wltty-nlDy. a member of lite
u/um^rifcaxL unorgantaeri. and of course unappreciated
mmmunlty of Text Hackers." *
What do you need to pursue this odd actMty? My list of
tools conflshi o£
a) A good editor. (Or tun or three; I use six myself, but
that's "gliding tlte UNO
b) A text proc e ssor. The classic ones are TRDFF and
NROfT and tlieta chlkfren and clones. The former Is for
pronorttonalty spaced text, the tatter for fixed (typewriter]
spacing. I use TSCs TEXT, which suffices, but could be
Improved considerably. Frequently (a) and (b) aie axnbirvx)
Into something calkxl a "Ward prenssnf * whlcl 1 Is aQ very well,
but (tmlts your flexibility In crorslng (a].
c) A macro rjttnssor. Macro capahlllues aie provided by
all sorts of different utilities, from edltots to enmpflers. but I
prefer stand-alone macro procenorB like tlte one my company
has Just Introduced for lite 6809 - ML/I.
d) SNOBOL. preferably SNOBOL-4. Alas, this Isnt yet
available lot our Motorola -based machines, although It has
been Implemented on most mainframes and Is even available
lot tlte IBM-PC.
Most of you are famUW with edit as and lead promt* ra.
and If my experience Is any guide, you defend your favorites
with an enthusbsn I fear to challenge, whlcl i gives me a good
excuse to ramble ar\ about maao pnxrsEEss, oranoting ML/
I In tlte procera.
What Is a macro processor? Essentially It Is Just a system-
atic text edltoi. In which lite substitutions are specified by
some spe>4a) character patterns, whlcl 1 are procesed In the
same way as the text to be edited. This is tlte pilndpal
distinction between maao proressDrs and edltois which
suppott maao capabilities - tlte maao commands are Imbed-
ded In tlte text stream tatlter than being entered from tlte
console.
A good macro pransar, however. Is much more powerful
than an editor., stnor It can support much more extended
capabilities titan are convenient to execute from a kevbrard.
GeneraDy a macro processor is baaed on a set of opEtttttrx
morros which aie Invoked by the appearance in tlte text
stream of certain text patterns, called 'calls" of tlte operation
macros.
The basic opetabon Is text replacement which Is arranged
by calling an operation maao to define a user macro which will
ther-afler be rerngnfazx) tn the text stream. In ML/1 this Is
done by Inserting a string Uke tlte following Into tlte text
stream.
mff ABC AS DEF;
After tlte maao prrxenar encounters this string It WiD
recngrxte all sutxejuent appearances of tlte characters ABC.
set off by spaces or punctuation, as cnBs of the user macro
ABC, and this string will be (vploosi tn the text stream by lite
string DEF.
This Is about the simplest possible example of ML/I's ca-
pabilities, yet it exhibits several features of Importance.
Note tlte phrase "set off by spaces or punctuation.* This
qualification Is made brrnusr ML/I does not process tlte Input
text character by character but In groups of characters called
atoms. An atom Is either'
a) A punctuation character. Including spaces and car-
riage-returns.
or
b) An alphanumeric string bounded on each side by punc-
tuation charar&ra
ML/I will not. for instance, replace ABC In lite string
ABCDETCHUKLMNO 1234 5XYZ.
Also note tlte semlcolnn at tlte end of the definition. This
bounds, or dt&ntts tlte replacement text, and Is consequently
called a drffrn/ler. Specifically, this Is tlte closing delimiter lot
the maao MCDEF. The other delimiters in the example are
"AS" and. for generality. -MCDEF- tlsctt
Having defined one or more macros, the nexl facility tliat
the user needs to know about Is tlte ability to turn ofT macro
pn-n»!ng, This Is done by tlte feature known as a skip which
can be defined In tlte following manner.
naap MT, < > ;
Here we have defined tlte skip whose name Is "<" and
which Is In effect fiom tlte appearance of the "<* until lite char-
acter ">" is encountered. Thus in
ABC XiZ <ZZf ABC WCPQ ABO GOG ABC
only lite first and last ABC would be n-pfami by DEP. e.g.
D3* xyz ZZY. ABC MKPQ ABC 03G CEF
Note that tlte skip characters have disappeared. This Is
effected by tlte fiist argument of the skip definition, the string
'MT* which b delimited by the comma. This argument con-
sists of any or none of the letters M. D. and T. Of none Is
present you dont need tlte comma either:) The letter T means
that the enclosed text should be copied to lite output stream
(otherwise It would be deleted.) The letter D means thai the
delimiters. Le. the skip name and its terminal dettmltet.
should be copied onto tlte output stream. If tlte letter D had
been used tn tlte above definition, tlte delimiters "<" and *>"
would also have been present tn tlte output The letler M
means that this skip must match its terminal delimiter, that
Is. It Is aObwed to be nested.
Macros can have aroumente. The macro ABC Is an
example of a macro without arguments. In ML/I. arguments
must be separated by delimiters. Also a special atom or
pattern of atoms must be defined as an Insert name, which
when erux-jnlered will cause arguments to be Inserted Into
the output text For example
tens t . ;
rCSKIP MT. < >;
K2B' SWITCH , > ASC4A2. OU.>;
sets up tlte insert "fit", tlte skip *<". and tlte maao
38
Octobof '87
'68' Micro Journal
"SWTIOr which has two arguments, ddtmrted by a comma
and a semk-oion. In the output Stream, each crrurrence of
SWITCH wiU result In lite two detenHed pieces of text being
switched around, e.g.
(DC SWITCH ZZY, FTC IJK m>;
becomes
QQHE FTC IOK HP ZZlf XXX
Note that lite spaces around cadi argument liave been
eliminated. Tills Is tlie result of using tlie Insertion "&AI."
which trims off all surrounding spaces. If we wanted to retain
Hie spans, we would have used "&B1." and "&B2.~ Instead.
But enough of textbook examples. Let's examine a real Hfe
prcblan I encountered Just a few weeks ago. I was obliged to
tiy to get a very snooty mainframe to put out a text file In a form
I could use on my 6809 Helix. Tlie mainframe was persuaded
to yield ASCII, and eondescnded to produce variable- length
rwmds, but by dint of no persuasion would It put carriage
returns at tlie end of each Hue. So I got a file of 44K characters
wltll no newUnes. The Macintosh wtfl edit such files, but most
editors on tlie 66X19 have rattier axEervatrve notions of Imw
long a line should be. and 44K Is rattier beyond tlie bounds of
wtiat tliey liave In mlndt However, tlie mainframe also Insisted
on producing useless brie numbers on each reu»d, and I
noticed that tliey Ali. ended with lour conxrutJve zones. So
I proressri) tlie Qle using ML/1 and tlie fallowing definttixet
icins & .:
K"3CD? MT,< >;
KXXT SPACES SPACES NO
ASOCrxO LlOUNLESSOHCSUB (UU .,-3,0) -0000;
Hfl)0.tU.tAl.>;
which tnsertnd carriage returns wtiere lliey belonged
Admittedly, this packs a lot of ML/Ts most powerful
capabilities Into a lot of space, but let's lake It one step at a
lime:
a) The first two lines you liave seen before, so tliey should
be no problem.
b) Tlie macro name Is "SPACES" which, when It occurs In
a macro definition, to a "code word" lor "one or mote spaces."
Hence, every orrurrence of a group of one or mote spaces In
tlie Input text will be considered a call of tlie macro. Tlie ter-
minal delimiter Is also SPACES. Wiry doesn't It get treated as
a call of tlie macro we are defining? There aie two situations
to consider:
I) While tlie macro Is being defined.
2 While tlie macro Is sannrng text looking far Its delim-
iter.
In tlie first case, tlie macro name to not yet in tlie
"dictionary" that ML/I ises to determine If a macro to being
called In tlie second case, tlie call Is tnhfctted by tlie delimiter
"SSAS" which indicates that we have defined a "straight-scan"
macro, tliat to orie that does not recognize macro calls while
scanning far delimiters
cJTlie replacement text constats of al text between tlie de-
limiters "<" and ">" but this lext to subjected to prarasing by
ML/I wtien It to trxsertol into tlie output stream. Conse-
quently- any macro names present in tlie replacement text are
remgntxd as calls and are expanded /executed at lliat time.
This to why llie replacement text was enclosed In a skip -
otherwise tlie macros In tlie re(Jaronait text would liave been
expanded whlk tlie macro SPACES was being defined
d) MCCO to an operation macro tliat Instructs ML/I to
internipt Its scan of text and resume after tlie Indicated
"label", provided tliat tlie condition specified in tlie MCCO to
satisfied.
e) MCSUB to an operarkn macro tliat returns as lis value
tlie substring In Its first argument from tlie position given by
Its second argument to tlie position gh*n by Us third aigu-
menl As If tliat weren't complicated enmgh. zero and negalhc
numbers Indicate offsets fmm tlie tight end of tlie text string,
What this macro returns Is tlie last 4 characters of tlie argu-
ment of tlie SPACES macro.
Tlie MCCO condition to satisfied UNLES the tost 4
characters of tlie SPACES arguments are zeroes.
g) If tliey are zeroes, llie effect of tlie MCCO to to insert a
carriage return.
h) In dtlier case, tlie expression &L1. to a macro "label"
and Is not copied Into llie output text.
1) Tlie next ilem encountered, "&WD0." to Just llie macro
name Itself, but specifically it Is 'llie number of spaces In llie
atom which resulted in tlie call of Hie SPACES macro.'' Wliat
Ihto does Is Insert Into tlie output text tlie exact number of
spaces tliat were encountered, so lliat there will be no space
suppression when a carriage return to NOT Inserted It doesn't
matter much wlien one Is Inserted
JJ Tlie final Item in tlie replacement text Is "&A1." which
Just puts llie text between tlie two groups of spaces Into tlie
output stream. We would liave used *&WA1 ." If tlie characters
"&" or "<- had occurred In tlie Input file, but tliey didn't Tlie
"W. which means "VWttten". would keep the argument from
being expanded when It was (rooted
k) The character *>* bounds tlie replacement text, and tlie
sonknlon Bnlahas up tlie macro deflnltfc*v
Lets see. liave we ovaknkerJ anything? Oh yes:
Q The atom "NO* means tliat the proceeding delimiter (tlie
terminal delimiter SPACES In Ihto case) to an exclusive delim-
iter, which means tliat after tlie macro to exparded scanning
of tlie input text tesum-s AT Instead of AFTER tliat delimiter.
Since tlie terminal delimiter Is a macro name, it to then
expanded. If we didn't do this, only every otlier group of spaces
would be treated as a macro name, and we would certainly
miss many of llie desired places to insert a carriage letum.
mj Tlie parts of Hie MCCO, which would ordinarily look
like
tCGO II UNLESS KSUBttAl., -3,0) -0000;
aie separated by tlie null expression "o" because ollrer-
wbe the blanks would be considered calls of tlie SPACE
macro! Now you see why thee delimiters must be defined with
tlie "matching' attribute, since otherwise tlie first orrAm-enrr
of ">" would terminate tlie replacement text!
dazzling, tonl It? And so far we ate Just in tlie "muarle-
fiexing* stage of using ML/I. Let me hear from you If you would
like some mote tutorials on tlie use of this program.
EOF
Editor's Note: ff anyone qualifies for (he Ode Text Hacker" ll is certainly
It I spend a good portion of each day reedltlng someone eises text.
Mostly articles, but sometimes technical manuals for one oj "the foreign
or domestic hardware rnarudaclurers who use us to produce their
darumer>tn/t£n and manuals. Having used ML/ 1, lonlywIshthotllKod
been available years ago) ML/I brings a lot oj needed power to those
of us allll using 6809 systems.
DMW
68' Micro Journal
October '87
39
The following ii the
beginning of a continuing
series. Most of you will
remember Bob from hit
sates of letters on XBASIC.
If you like it or wmi more,
let Bob or us know. We warn
to give you - whal you wan//
The Mathematical Design of Digital Control Circuits
By: R. Jones
Micron ici Research Coip.
33383 Lynn Ave., Abboufotd. B.C.
Cm»iJ» V2S1E2
Copyright**) e by R. Jones & CPI
Solutions to TEST TWO
(a) Dual
(b) Dual
(c) Dual
a + be'
ab + c'd'
(a + b') (c-
♦ d)
Complement
Complainant
Con pi erne nt
a' + b' c
a ' b ' + cd
(a' + b) (c + d')
2. Circuit diagrams appear below
(a) Yl - ab + be + abc
- ab + be Rule 5
- b(a + c) Rule 7
(b) LI - ab + a'c + bed
- ab + a'c + (a + a') bed Rule 2
- ab + a'c + abed + a 'bed Rule 7
- ab + a'c Rule 5 (twice)
(c) Yl - (a + b) (c + d) + a'b'
- c + d + a'b* Rulea 8 and 6
(d) ¥2 - (a + b) (a' + c) + b + c
-aa' +ac+a'b+bc+b+c (multiplying out the parens)
- ac + a'b + be + b + c Rule 2
- b + c Rule 5 (3 timea)
OH
Hl^
-It
■ if" J E
b'
fc)
3. To save space, the Initial network will not be drawn. This will be left to the student.
(a)
L3
-
x+y+y' - x ♦ 1
(Rule 2) - 1 (Rule 3)
(b)
Y2
-
a + bb' - a +
(Rule 2) - a (Rule 4)
(c)
Yl
-
(a + b + c> (d + e) (b
+ c
+ d) (a + e)
-
abc + de + bed + ae
Form dual
-
a (be + e) + de + bed
Rule 7
-
a (be + e) + d(bc + e)
Rule 7 again
-
(be + e) (a + d)
and again
-
ad + (b + c)e
Form dual to restore
(d)
LI
-
a'b'c + ab'c + a' be
-
b'c(a' + a) ♦ a'bc
Rule 7
-
b'c + a'bc
Rule 2
-
c(b' + a'b)
Rule 7
-
c(b' + a)
Rule 6
(e)
a + a'b + a'b'c + a'b
'c'
d +
-
a + b + b'c + b'e'd +
a + b + c + c'd + . . .
a + b + c + d+
Rule 6, and so o
(e)
(a + be ♦ e) (a + be ♦
I)
-
a + be ♦ ef
Rule 7
40
October "87
'68' Micro Journal
4£
— iii >r
to
b'
4t*
-Cfr
<3H
CO
■^
t->-
— 11- 2 -!^
-»*— }^
(f)
Mfle2 - heading Jor Mile 3
THE BINARY NUMBER 8T8TEH
Not again. I can hear you groan! We already know all that stufll This will be quick and painless, though,
unlike our last session, which was pretty tough slogging. But I'm afraid It's necessaiy to recapitulate our
knowledge of blnaiy numbering In order to get the complete picture.
Ixt's begin by taking a look at the decimal system, in order to understand the relationship between ALL
numbering systems In general. We'll concentrate on the simple number 101. What this really signifies is
that the ilghtmost digit specllles the number of "units* In the number, the centre digit the number of "tens",
and the leftmost the number of "hundreds". Note that because we are In the DECIMAL system, each digit (as
we proceed from right to left) Increases by a factor of 10, and that the system also requires 10 symbols In
order to function correctly, namely 0. 1, 2. 3. 4. 5. 6. 7. 8, and 9. Commencing with 0. the set of symbols ends
with a digit which Is ALWAYS one less than the "base" in which we are working, that Is. 10. So. when we read
the number 101, we are really adding up "one hundred, no tens, plus 1 unit" to give us our normal "one
hundied and one".
Now let's look at blnaiy numbers horn the same kind of viewpoint. Here, we are working In base 2. so,
commencing with the ilghtmost digit of any number (or "word" as It's sometimes called), which we read as
"units", each digit gets multiplied by the "base" 2 as we proceed leftwards, to give us "twos", "fours", "eights", and
so on. Further, because we are working In base 2. we are constrained to TWO symbols only, commencing
with 0, and the highest allowable symbol will again be one less than the base, giving us 1. The number 101 in
this system Is Interpreted therefore as "one four, no twos, plus one unit", which Is equivalent to 5 In the mote
familiar decimal system. Flom all this Info, you should readily see that Base 1 would be quite meaningless,
as. commencing with the rightmost digit (or units), each digit to the left would Increase by a ratio of 1 (thus
remaining a "unit" too), and further, the allowable symbols would, commencing at 0. be restilcted to a
maximum of one less than the base, that Is again. So "0" would be all that we'd be able to count
We are not going to go Into blnaiy math here, as It's of no concern In the field of logic, until such time as
we need to create a blnaiy-addltion or multiplication circuit.
LOOKING AHEAD
In the next section, we're going to learn one of the newer techniques 1 promised you last time, which is
going to make the manipulation of Boolean expressions SO much easier for you. but fli-st let's take a little
peek at what the more dtstant future Is going to hold for us. We're going to take our first step away from the
direct manipulation of Boolean symbols, and become familiar with translating freely between algebraic
terms and their equivalent blnaiy numbers. Then later on In this course, we'll take the ultimate step to the
use of decimal numbers, and learn how to design complex control-circuits by "playing around" wtth these
decimal numbers and arranging them In special ways.
We've all eady tried replacing an uncomplemented symbol with a "1", and a complemented symbol with a
"0", when we looked at the Laws of Boolean algebra earlier on. so consider for a moment the following :
In a
In a
In a
The decimal equivalents are given here only to give you an Inkling of how our Ideas are going to develop,
but for a little while, as I've already said, we'll stick with blnaiy. Just be patlentll
2-r«lay circuit
ab - 11 (bi
a'b - 01
nary)
- 3 <d«
- 1
icimal)
3-relay circuit
obc - 111
ab'c - 101
- 7
- 5
4-relay circuit
abed - 1111
abc'd - 1101
- 15
- 13
'66' Micro Journal
October '67
41
THE KARNAUGH MAP, OR K MAP
You're now ready (o meet a veiy powerful and versatile ally In the analysis, simplification and synthesis
of Digital Control-Circuits. Here he Is - the Karnaugh-Map. named after a certain M. Karnaugh. If we are
dealing with no more than 5 variables the K-map Is practically unbeatable, but beyond this number It
becomes Increasingly cumbersome to use. as you'll eventually discover for yourselves, but by then we'll have
moved on to better things.
I referred to "analysis" and "synthesis" In the preceding paragraph, so let's clarify these words before we
go on. Analysis means the study and possible simplification of an already-existing network, whereas
"synthesis" means the design and bulldlng-up of an original network from a set of specifications.
The basic 4-vai1able K-map consists of a block of 4 x 4 squares, as shown In Diagram 6. and algebraic
terms can be entered on It as shown In each of the maps.
<-<j\.O Q oi " 10
oo
II
10
1
IN
oo
gj
v
\o
oo
1
o\
1
\0
ab'c'd \0O\
hpb
co
1
01
1
II
1
to
1
00
oo
oi
II
10
IO
1
1
1
1
1
1
1
1
ab'c'
cw
L. *>
b' -i-
At Ihe top-left of each square, the letters "ab" and the corresponding column-headings 00. 01. 11. 10
mean that the headings are to Inteipreted as a'b'. a'b. ab and ab'. Similarly with the rows, which are read as
c'd*. c'd. cd and cd'.
Let's study each map In turn, and establish a system for entering an algebraic term In the correct
squares. The first one. ab'c'd Is fairly simple - we simply translate It Into blnaiy. that Is 1001. and enter a "I"
where the "ab" column 10 Intersects with the "cd" row 01.
Map (b) is a little trickier. Here we must translate ab'c' as 100-. Ihe "-" marking the spot where the literal
"d" belongs. Then we enter a 1 In column 10 (the first two blnaiy digits) everywhere that this column
Intersects with a row where the equivalent "c" Is 0. that Is. rows 00 and 01. What weVe done. In effect. Is to
enter ab'c' as if It were made up of two separate terms, ab'c'd' and ab'c'd. which, of course. IS so.
ab'c'd' + ab'c'd = ab'c'fd' + d) - ab'c' (Rule 2)
Applying these principles still fuiiher. In Map (c) we translate ab' as 10--. and simply enter 1 In the 10
column in all rows, as the blnaiy translation tells us to Ignore the "cd" row-designailons. And finally. In Map
(d). we translate b' as -0—, and enter 1 In all columns In which the literal "b" appears as (namely the first
and last), and again Ignore the "cd" row designations entirely.
Compailng the four maps, we notice that each time a literal Is omitted from a term, the number of Is
entered on the K-map Is doubled. Another way of saying this Is that each time the number of Is Is doubled
(note the relationship of the words "double" and "blnaiy") the corresponding term Is reduced by one literal.
Note too that the number of Is ts related to the blnaiy system, namely 1. 2, 4. 8 - there are no terms
corresponding to 3. 5. 6 or 7 entiles on the map. These observations are VERY Important and should never
be forgotten. A further point Is that even when a block does equate to a blnaiy number It's rectangular In
form. You won't find a "1* In one square and a second diagonally situated In a 2-entiy block, for Instance.
If we look once more at the maps, we see that Ihe only term occupying a single square Is ab'c'd. and so It
Is called ? .... That's correct. It's a "mlnlerm" and now you can see why It's so called. Consider this a
moment before reading on. All the clues aie contained In the four mapsl The answer, of course. Is that It is a
"minimum term" because It requires the minimum number of Is to recoid It on the map. If you try enteilng a +
b + c + d. you'll find that the map will be completely lllled up. except for one solitary square somewhere.
Hence the name "maxterm". for "maximum term".
TEST THREE
Enter these terms on K-maps. If you brought your pad of squared paper along wllh you. It shouldn't take
long to draw up a set. IVe found it a good Idea to prepare a whole pageful of these maps and to Insert II Inside
one of those transparent page-protectors which can be picked up almost anywheie. Then you can do your
work wllh a grease-pencil or felt-tip pen. and simply wipe It all off when you're done.
(]) a'b'cd'
(3) I'b'c
(8) ad'
(2)
(1)
C9>
abe'd'
a'bc'
b'c
(5) ab'd
(10) ab
(6> a'cd'
(111 a'
(7) fed
(12) d'
42
October '87
'68' Micro Journal
THE K-HAP METHOD OF SIMPLIFYING EXPRESSIONS
From this point. It's but a short step to the simplification of Boolean expressions with the aid of K-
mape. Initially, we'll make It a rule to expand our expressions out Into sum-of- products form, unless they're
already so expressed . Thus (a ♦ b)(c + d) must first be multiplied out Into ac ♦ ad ♦ be ♦ bd.
We'll start oil with a very simple example. The problem Is to simplify ab ♦ be' + ac' on a K-map.
«K
b
OQ
o\
11
10
v°b
o\
11
\o
c£\oo_
01
11
10
00
1
00
11
10
1
1
1
00
o\
II
<0
1
r
r
o\
1
1
1
1
I
r
r
II
1
1
1
10
1
1
/
d
b
ab-*-
be
/
<
ab + b'cW
(X^fdin 7
The successive stages in completing the map are shown above. Fttst. we enter ab. then we add b'c' (note
the correspondence between my use of the word "add" and the "+" or OR sign between each term), and finally
ac' — Indicated by the squaies marked wtthdots. This shows us rtght away that ac' Is already included in the
pievlous two terms (half of It In each one), so the expression obviously reduces to ab + b'c'. In a case like this,
the simplification Is immediately dear to us. but this Is not always so, and we must learn to "read" a K-map
properly before we can say that we're K-map experts. But notice in our example how we were able to do our
simplifying without even knowing which Law of Boolean algebra to apply. The K-map did It all for uslll
Now let's return to our Rules for Club-Membership. Remember how many steps we went through to
icduce that one? The rules were at one stage translated Into the expression :
xy' ♦ my ■♦■ xyz + mxz ♦ m'xz'
Each step In the simplification was not too difficult to understand (did I really say that?), but It's still a
tough proposition to start from scratch and tiy to figure which law to apply and when to apply It. bearing in
mind that tfyou don't see how to apply a particular law you may not end up with the best reduction! With Ihe
K-map. however. It's no problem at all. Simply enter each term on the map. and then read Itbackoutl Here's
how :
U7 V.PO oi 11 10
00
II
10
1
1
1
1
xy
00
1
1
CM
I
1
II
1
1
10
1
1
4- ms
jzVoo
OQ
1
1
o\
1
1
II
1
r
[
10
1
1
•ty
00
o\
(i
to
my
00 oi II 10
I
1
r
1
f
1
1
1
+rAX2.
.00 o\ 10
00
ram
01
'VA
l(
>u
10
iiL
',
+ «r»j<2-
Dtjgrain 8
'68' Micro Journal
October's?
43
The scries or 5 maps In Diagram 8 shows how the terms axe entered to give us a complete map. First we
enter xy". that Is -10-. to which Is added my. or 1-1-. followed by xyz. or -1 1 1. then mxz. or 11-1. and finally
m'xz'. or 01-0. Notice how some squares are already 1 when we come to make a d liferent enliy, but we Insert
no more than a single " 1" tn any square. The unoccupied squares are understood to be "0". but we don't bother
to fill these In as It makes the map too cluttered and difficult to read.
Knowtn g that the answer to this problem Is x + my. we soon discover that If we enter these two terms on
another map we end up with the same map as we have here. Try It as an additional exercise. But If we didn't
already know the answer, how do we read this map to gtve us this m ♦ xy?
READING A K-MAP
Recall for a moment that we found that the larger the block of Is entered on a K-map, the smaller the
term to which It corresponds. So. bearing In mind that one of our chief aims In desijpilng good circuits is to
get the smallest possible network to cany out a particular function, we are most definitely Interested In the
Largest possible blocks available on the K-map. Plus, of course, as few blocks as possible to cover all the Is
we have, as long as each block, or "loop" as It's properly called, contains 1. 2. 4. 8. etc ones. It's called a loop
because It's customaiy to draw a loop around each block selected for read-out. as I've done In the final map
above.
in reading a map, each "1" MUST be contained in a rectangular loop (no Os are allowed), but you may
Include the Is In as many loops as proves necessaiy In order to make them as large as possible. In our
example IVe Included two of the Is, you'll notice, in both loops.
While the method of read-out Is quite simple. It still needs a little practice before you become proficient
at forming the best combination of loops. 1*1*8 try reading the larger loop first. Here's how :
(a) Read the COLUMNS of the loop first, writing down a "-" In each position in which the variable
appears In both forms (0 and 1). otherwise write down a or a 1 for the variable.
(b) Apply the same principle to the rows of the map.
Let's elaborate. In the larger loop theie are 2 columns Involved, namely 01 and 11. and as the first
variable appears In both forms, and the second only as "1". we write -1. The loop covers ALL rows, with both
"y" and "z" appearing as and 1. so we write down -- for the rows. This gives us the complete term -1--. which
translates Into "x".
In the snaller loop, only the first "1" Is common column-wise, so we write 1- for this. Row-wise. too. It
has only the first "1" tn common, so again we write 1-. for a combined blnaiy entry of 1-1-, which, of course,
translates as "my". The complete read-out Is therefore
x + my
and again we have no Idea of which Laws got applied, or in which order. Good old K-map did It all for us
In one fell swoop!! I know, you're wondering why I didn't tell you all of this earlier. Instead of dragging you
through the "laws of Boolean" swamp. Could it be that sometimes the sadist In me gets the better of me? Not
really - the swamp happens to be on our route, and without experiencing the hard parts how can you
appreciate to the full the easy parts?
FORMING A GOOD LOOP COVERAGE
Some htnts on how to form a good loop coverage of a K-map. ALWAYS start with the smallest loops and
form progressively larger ones until every "1" on the map is covered at least once. That Is to say, you should
first form a loop around all single Is (one loop apiece, of course) which CANNOT be grouped with any others.
That is, there Is no other "1" adjacent to It. either horizontally or vertically. Then look for loops which
CANNOT be made bigger than two: then four: then eight and so on. Once all the Is are covered you can stop!)
Loops MUST conform to the blnaiy system (they must contain either 1. 2 4. 8. etc Is), and also the
number of columns or rows In the loop must so conform. No loops spread over 3 columns or 5 rows, for
example! Read on a little more before you get too Involved with trying your own maps, however.
MAPPING A PROBLEM SOLVES THE PROBLEM
But first make note of the remarkable fact that if you can once convert your Initial problem to a form
where you can successfully enter It on a map. you have at the same time SOLVED the problem. All you have
to do is to read the answer back from the map! And therein, my friend, lies the key to the whole of our circuit-
design technique.
October "87 '68' MterO Journal
MORE ON K-MAPS
^ni^.^
11
I
y$a
o
a
^
Dia&Bm9
The K-map In Diagram 9 represents the Boolean expression
ab + be' ♦ b'd'
Let's go Into more detail before we move on to using K-maps to actually design circuits. Maybe you've
been wondering why the rows and columns, although labelled with 2-blt binary numbers, are not In
numerical older. If they were, they would be In the order 00. 1 . 10 and 1 1 . All rather strange. Isn't It?
However. If we look a little more closely we notice that commencing on any square on the map. If we
move horizontally or vertically by one square, the appropriate column or row designation changes In only
ONE of Its bits. For example. If we commence In the top-left square, whose coordinates are 0000. and move
one square to the right we find ourselves In location 0100. Only the second bit from the left has changed. If
we move downwards flora this square, only the final bit has changed, to give us 0101. and so on. In other
words. SQUARES WHICH ARE ADJACENT IX) ONE ANOTHER CHANCE IN ONLY ONE BJT POSITION. It's
also true that SQUARES WHICH DIFFER IN ONLY ONE BINARY BJTPOSmON ARE ADJACENT TO ONE
ANOTHER.
GRAY CODE AND DOUGHNUTS
When btnaiy numbers are arranged In such an order that each successive number changes by one bit
only, the ordering Is known as a Cray code, and Is of PARAMOUNT Importance In the designing of RELIABLE
digital conlrol-clrcults. Even when the sequence overflows fnora 10 back round to 00. there Is still only a 1-
blt change! As we're not yet Into design, however, let's consider for the moment Ihe consequences of the
emphasised statements at the end of the preceding paragraph. One such Is that as that the top and bottom
rows of our K-map dtlfer in only one btt. they MUST be adjacent. In other words, Ihe K-map is really an
opened-out cylinder) But wait!) The left and right-hand columns are only one bit apart too, which leads us to
the conclusion that the map really represents the surface of a "torold" or doughnut.
TRANSMISSION AND HINDERING FUNCTIONS
Now let's come back to Dla^am 9. and read It out as follows. The vertical column of four Is gives us "ab".
the circled block of four "be" and Ihe four corners (which are all adjacent) can be grouped Into a block of four
to form "b'd*". the complete expression being "ab ♦ be' ♦ b'd".
This expression gives us the conditions under which the network as a whole will transmit current to
whatever device Is connected to It. In words. It Bays that if Relays A AND B are energised. OR If Relay-B Is
energised AND Relay-C not. OR If both Relays B AND D are de-energlsed, the device will be energised.
Because It gives the conditions under which the network will transmit current. It Is called a TRANSMISSION
FUNCTION. Ihe blank squares on the map (realty Os) give the conditions under which the circuit will NOT
transmit, that Is. a'bc + b'd. Do you see how to obtain this? What we did was to gioup as a loop of 4 Ihe two
blanks In the left and right-hand columns, and as a loop of 2 the two blanks In column 01. This Is known as a
HINDERING FUNCTION.
Ihe negation (or complementation, or opposite) of a hindering function Is a transmission function.
That Is (applying It to our current example) :
(a'bc + b'd)' « (a + b' +c1(b + d)
becomes a transmission function, and although this Is a completely different network from the original
transmission function formed by reading the Is, the FUNCTION Is exactly the same. Draw them both, with a
Light as the controlled device, and verify that whenever the relay conditions are such that one of the lights Is
lit. then bo will the other one be also.
A Is reading always gives us an expression In "sum-of-products" form, while reading the Os and then
negating the expression gives the "product-of-sums" form. Ihe factorlsed form of an expression, such as Ihe
Is expression above, namely b(a ♦ cl + b'd'. Is known as a hybrid or "monfyel" form.
VEITCH DIAGRAMS
Prior to M. Karnaugh's K-maps. the columns and rows were arranged In strict binary order, which made
It EXTREMELY dlfllcult to figure out which square was adjacent bit-wise to which. Loops also tended to be
quite messy as they wiggled and squlggled everywhere to Include their Is. and to avoid those outside Ihe loop.
These original maps were called Veltch diagrams (I'm afraid I don't recall the gentleman's initials], and to
68' Micro Journal
October U7
45
this day some people STILL use them, erroneously calling Ihem Kama ugh- maps. In their day. though. Ihcy
represented a step forwaid ftom what had gone before.
A PEW WORDS OF COMFORT
Once you've completed TEST FOUR It's fairly safe to say that you're out of the Jungle for some time to
come, and while 1 cannot promise that there won't be any moie lough patches. I doubt that any will SEEM as
tough as these ilrst few miles MUST be to a student having his llrst encounter with Boolean algebra and re-
maps. There ARE more complex Ideas ahead of you. but by the time you reach them you'll be a seasoned
campaigner and will be well-equipped to deal with them. Nuff saldl!
TEST FOUR
Read the following K-maps In both sum of-products and product-of-sums form.
00
01
II
10
1
1
1
1
1
I
1
1
(P
oo
01
(I
10
to
ca\ oo oi U to
oo
1
1
1
0\
1
I
(1
10
1
I
A
an
>
OO £»1 11 (0
oo
1
I
1
Oi
I
II
10
I
I
1
°9
01
II
\o
1
©o
\
1
OI
1
1
i
1
II
1
1
[
1
lo
1
1
Cm)
vdb
oa\P° ol - "
oo
I
I
1
I
o\
1
I
(1
1
1
10
1
I
1
1
—
Cv)
Cvi)
Uxi)
v ab
cA \oo oi H IO
oo
1
1
OI
I
I
I
1
II
1
1
I
1
IO
1
I
cd\oo oi il to
Oo
1
e>\
1
I
I
II
i
I
1
IO
1
\
Cvml)
As a further test In both completing and reading a K-map. and at the same time simplifying a circuit,
you should also tiy 'IT5ST TWO again for all examples Involving four, or fewer, variables
Next time round, we'll begin desiring something or othertl I promise!
Endo/MUe>2.
EOF
FOR THOSE WH
46
October's?
68' Micro Journal
Pascal
A
Tutorial
By: Robert D. Rclmlllor
Certified Software Corp
616C«ntir» Caballo
Ntpomo. CA 93444
805929-1359
aaBB
l-i ast month (actually, August) I mentioned the
debugger in passing. This month we will take a closer
look at debuggers for high level languages.
The amount of debugging assistance a high-level
language package offers varies widely. At one end, there
are those packages that offer no support at all (this is
typical of many "C" compilers), at the other end there are
those that are very good, including being able to
manually execute statements any time you want (this is
typical of many Basic interpreters).
The debugger I will discuss lies someone in between
these two extremes.
First of all, lets see what we need as far as getting the
information in to the debugger. The OmegaSoft Pascal
compiler can generate three basic output formats for
object code :
1) Relocatable object code. Used when we want to
link the modules together to get a stand-alone module
for use under OS-9 or on a target system.
2) Intermediate code. Used with the debugger, with
or without debugging information imbedded into the file.
3) Assembly language. Used for documentation
purposes.
Format 2, intermediate code, is a sort of binary
assembly language. The format is a series of pascal
strings with the following format :
1) Length byte - number of bytes in the record.
2) Opcode - one byte that represents debugger
information or an assembly language opcode.
3) Size - one byte representing a data size of byte,
word, or long for assembly language opcodes.
4) Postbyte - for assembly language opcodes,
indicates the addressing mode, such as tegister direct,
auto-increment, etc.
5) Value - zero or more bytes representing the value
that goes with the postbyte, such as a indexed register
offset, or external label name.
Fields 4 and S can be tepeated for those opcodes
that require two operands.
In addition to assembly language opcodes, there are
special opcodes for debugging information. There are
two main types, debug,, and line. Line records are vety
simple, they simply tell the debugger that the code that
follows starts at the line number specified in the file. This
is used to set breakpoints at the start of pascal
statements.
A debug records has a number of options :
1) Start of a procedure. Information included is the
procedure's internal name (a unique name for each
procedure in the module), parameter size, and
procedure name.
2) Start of an external procedure. Same information
as 1) above.
3) End of a procedure. Information included is the
procedure's internal name, and it's name.
4) Variable record. Information included is :
a) variable name
b) symbol table pointer (in the compiler). This field is
used for handling referencing a type that is used as part
of another type or variable.
c) block name. This is the internal name of the
procedure where the variable/type is defined in (globals
have a block of -1).
d) Id group. Can either be a type or a variable.
e) storage group. For instance, register, stack, varib
external, record offset.
f) storage address. Depends on the storage group,
always 4 bytes long. Can be stack offset, absolute
address, an internal name, or register number.
g) Type. Can be the actual type or a value indicating
it is a parameter or function return, if so, the actual type
wiD follow.
h) Extra information depending on type :
1) For types that defer to another previously defined
type, the symbol table address of that type.
2} For longhex/pointers, a byte that tells whether it is
a simple longhex, a pointer to a standard type (such as
integer), or a pointer to a non-standard type. If it is a
pointer to a non-standard type, then there will be the
symbol table address of the non standard type.
3) subranges. Two, byte, woid, or longword entries
that represent the offset and range of the subrange.
'68' Micro Journal
October's/
47
4) Strings. One byte that indicates the maximum
length of the string.
5) Sets. One byte that indicates the maximum length
of the set (in bytes) and then the entty for the base type
of the set (this data starts over with item g) above).
6) Arrays. For each index declaration in the array,
the type is defined (starting with item g) above). The last
thing is the definition of the base type of the array.
7) Devices. Four byte size of the device followed by
the definition for the base type of the device.
8) Records. Four byte size of the record, four byte
symbol table address of the last field in the record. For
each field in the record a new varib debug record follows,
including name fields, record offset, etc.
4) Pointer resolution. Since the base type of a pointer
can be defined after the pointer to the object, this record
binds the pointer to the type it points to.
5) Module. Tells the debugger the name of this
module.
6) Program. Tells the debugger the name of this
program.
7) Lex. Updates the debugger as to what lexical level
(procedure nesting) is being compiled.
Since this information is imbedded within the code
being generated, there is no need to create a separate
debug symbol file (which wastes time and storage) and
makes correlating between symbols and code relatively
easy for the debugger.
The compiler can generate an intermediate file with
or without debug information. Any file generated without
debug information will run real-time under the
debugger, since the same code will be executed as if you
went through the link step. Code that is generated with
debug information will execute the same code, but in
addition, will execute a routine at the start of each pascal
statement, and at the start and end of each procedure.
The amount of overhead depends on whether there are
any breakpoints in place, or if options such as statement
trace are enabled.
Certain sections of a program can be selected to
have debug information on or off. This is particularly
necessary for such things as exception and intercept
procedures, which must not be delayed by the debugger
for any reason.
The other type of file we want to be able to include
when we are debugging is assembly language files. For
these we allow loading of relocatable object files.
Now that we have an idea of the files we want, lets
look at the commands that have been implemented for
handling these files. First of all, the debugger has three
different modes. When we enter, we are in the "filer"
mode. After all files are loaded, we can move to the
"pascal" mode. The third mode, "assembly" mode, can
be entered from pascal mode, and then you can return to
pascal mode from assembly mode. Once you have left
filer mode you cannot return, since some of the symbol
table information used in filer mode is re-used once you
enter pascal mode.
Filer mode allows the following commands :
1) Load relocatable object files. These can be
assembly language modules for support routines for
your pascal program, or replacement runtime routines.
2) Load intermediate code. Loads the intermediate
code into memory, translating it into 68000 object code
for execution. If there is debug information embedded in
it, it also builds the symbol table for each module.
3) Link. Resolves inter-module references for both
the object code, and symbol table information.
4) Check. Docs a cross reference check between
symbols in each module. For instance, if you had
changed the parameter type of a procedure in one
module from value to variable, but forgot to change it in
the other modules that call that procedure, this
command would warn you about it.
5) Status. Displays amount of table space used and
remaining, sizes of each module, and inter-module
symbol table references.
6) Default I/O. Lets the program being debugged
use the same standard I/O handlers as the debugger is
using. If you need separate ports for the debugger and
the user program, then these must be loaded as
relocatable object files and this command not used.
7) Set exception vector. Allows the user program to
handle exceptions, following restrictions that the
operating system may impose on the user.
8) Enter pascal mode. Enters pascal debugging
mode.
In the pascal debugging mode you are concerned
primarily with what happens at the pascal source level.
There is a command that will display the current pascal
source code where you are stopped at, including an
indication of which tines actually generate code so that
they can be breakpointed at. Facilities are also included
so that you will not stop at the breakpointed line until it
has executed a certain number of times. There is also the
capability to execute a "macro command" when the
breakpoint stops. These "macro commands" are simply a
list of commands that you type in before you start the
program.
The other main item you want to deal with are pascal
variables. The advantage of a high-level debugger like
this one is the ability to inspect and change variables in
their actual format, be they characters, integers, reals,
strings, arrays, or records. This was the reason for
including such detailed information about variables in
the intermediate code. In addition you also want to be
able to index into arrays, or select individual fields within
a record. This is especially useful for following a linked
list structure, where you might want to look at the 3rd
record in a linked list, and a field called count in that
record :
<P> d base A .link A .link A .count
base A .link A .link A .count »150
<P>
Since source code can change frequently, and none
of us really wants to wait for a listing (unless you arc
46
October 37
'68' Micro Journal
looking for an excuse to take a nap), many times we do
not get a new listing when changes are made. To make it
easier to find what line number we want to breakpoint at,
there is a facility that prints the starting line number of a
procedure, this combined with the source listing facility,
makes locating the desired line fairly easy.
For instance, in the prime number test piogram, we
can find the begin of the main piogram by typing ;
<P> n program
prime.9
<P> 1 prime.9
Would display lines before and after line 9 in
module prime at the top of the screen, as :
5: var
6: flags, airaylO .. size! of boolean ;
7: i, prime, k, count : integer register ;
8: iter : integer;
9* begin
10* writeln {'10 iterations') ;
11* for iter := 1 to 10 do
12: begin
13* count » ;
14* fori :=0 to size do
15* flags[ll:=true;
In order to start the user's pascal program, we enter
the GO command. Befoie stalling the program, the GO
command will parse the specified command line (if any)
and look for standard I/O redirection modifiers. This
allows programs that are written as filters to be properly
tested using the same redirection facilities as provided
by the shell.
There are two types of proceed commands, proceed
and trace statements, and proceed to breakpoint. In the
first instance, we can select how many statements to
execute until we stop. In the second instance we can
proceed until we encounter a previously set breakpoint
(up to 16), or proceed to a temporary bieakpoint.
Statement trace and procedure trace commands are
included. The procedure trace command will list out up
to 50 procedure entry's and exit's in the order they
occurred. Statement trace will list out up to 50 statement
numbers in the order they were executed. Statement
trace capture must be previously enabled, this avoids the
extra overhead if this feature is not wanted.
Assembly mode can be entered at any time and
provides a variety of commands to allow debugging at
the assembly language level.
A line by line assembler, disassembler is provided.
The starting location can be specified as either the actual
FOR THOSE WH\
code address, or as a statement number in a pascal
module. Runtime routine names are expanded into their
actual name, rather than just displaying an address, to
make correlation between the pascal source and
assembly language more apparent. This mode if useful
when you want to "patch" the code rather than going
back and editing and compiling a module to make a
change. It is also useful to see what the actual code
generated was, just in case you are unsure of what the
pascal statement is really supposed to do.
Assembly mode also provides it's own breakpoints
(up to 16), and again, a macro command can be executed
when the breakpoint is encountered. Assembly mode
also piovides the following commands :
1) Block memory move.
2) Calculate value of expression, works as a simple
hexadecimal calculator for figuring offsets.
3) Change registers, both data and address.
4) Chimp memory in hexadecimal and ASCII.
5) Find one to 16 byte pattern in memory.
6) Initialize an area of memory.
7) Memoiy modify /set. Allows inspecting/modifying
memoiy as bytes, words, or longwords. In addition allows
skipping every other byte for I/O ports. The memoiy set
command is the same except it does not read the
memory contents to allow access to write-only I/O ports.
8) Set offset. This value is used when working with
code only, such as disassembly and breakpoints.
Normally set to the starting address of the module you
are working with.
9) Proceed to breakpoint, add temporary breakpoint
if wanted.
10) Display registers.
The target debugger (which runs over a serial link
between the host and the target system) also allows
assembly language tracing, since it does not have to fight
the operating system for the trace vector.
These capabilities provide a quite usable debugging
capability without requiring any special hardware
attachments, which many of us cannot afford anyway. As
a large project progresses, only a few modules will
probably be changed at any one time, so that all others
can be compiled without debugging information,
allowing real-time execution of those modules.
In the next chapter we will take a look at a program
that does OS -9 system calls.
OmegaSofi is a registered trademark of Certified Software
Corporation, OS-9 and OS-9/6B000 are trademarks of Minvworc
Systems Corporation.
EOF
a NEED TO KNOW
68 MICRO
JOURNAL
<tm
'68' Micro Journal
October's?
49
Bit-Bucket
NEW FAMILY OF INDUSTRIAL MICROCOMPUTERS
PERFORMS
IN HARSH ENVIRONMENT.
GESPAC announces its entry in ihe systems business with
the introduction of a new family of versatile microcomputer
systems aimed at ihe industrial marketplace. The GESCOMP
is a powerful real-lime, mulli -tasking microcomputer
system in a rugged and compact single height Eurocard
package, that allows ihe user lo monitor, lest and automate
processes in a variety of harsh industrial and military
environments.
The GESCOMP system is intended lo be used as a process
or cell conuoller in factory automation applications. The
GESCOMP is ideal for use as imbedded computers in
intelligent machine tools and specialized instrumentations.
The GESCOMP systems can also be used as total hardware
and software development workstations.
The GESCOMP offers the highest level of processing power
for systems of its class and size. At Ihe low end of
GESPACs offering is the GESCOMP 8300- M which uses a
8 MHz 16-bit 68000 microprocessor and comes equipped
with two I Megabyte 3.5" floppy disk drives and 512
Kilobytes of RAM. The most powerful member of the
GESCOMP family is the GESCOMP 8340-P/HF which
features a very high performance 32-bit 68020
microprocessor running at 16.7 MHz with a 68881
arithmetic co-processor. 2.5 Megabytes of RAM, 1
Megabyte of 3.5" iloppy disk storage and 40 Megabytes of
hard disk storage. Several variations of these systems are
offered by GESPAC depending on Ihe amount of processing
power needed and the required disk/RAM storage capacity.
The open G-64 bus architecture of Ihe systems allows
memory expansions up lo 32 Megabytes.
The GESCOMP system is supported by the OS-9 disk
operating system which is well accepted and familiar lo the
automation industry. OS-9 features an advanced "UNIX-
Like" structure and form. A special library allows OS-9 lo
ran programs written for UNIX in C. Unlike UNIX,
however, OS-9 features a lean and fast modular structure thai
can easily be pul into ROM for diskless systems. Ihe real-
time, mulli-lasking nature of OS-9 permits the user to di-
vide his applications inio several concurrent tasks, while
allowing real-lime response to outside events. The modular,
multi-user architecture of OS-9 permits the addition of a
new user lo the system in no time. Depending on Ihe load
of work, the GESCOMP system will support up lo 16 users
on line simultaneously.
The GESCOMP is delivered complete with Ihe disk
operating system, a screen editor, macro assembler,
symbolic debugger, linker, and a C compiler. Other high
level language interpreters or compilers are optionally
available for Fortran, Forth, Basic and Pascal.
By: AH of us
•ContribuuWptkutg - Ij^ta tyUung\ DMW "86
A key feature of ihe GESCOMP system is ils open G-64 bus
architecture which allows a degree of customization which
is unsuipassed in ihe industry. This customization is
essential in order to meet Ihe specific requirement of mosl
industrial applications. For instance, a GESCOMP may be
configured as a data acquisition system by adding analog
I/O modules and additional nonvolatile storage memoiy. Or.
by adding motor controller cards and industrial I/O inter-
faces, the GESCOMP can be Ihe main conuolling unit of a
milling machine.
A GESCOMP syslem typically provides 8 unused slots,
each of which can accept any one of the 150 G-64 board
level products in GESPACs catalog. The GESCOMP will
also accept G-64 bus board level products from any of the
more than 30 independent G-64 bus vendors. The G-64 bus
is a second generation microcomputer architecture aimed at
midrange industrial applications.
GESCOMP are designed lo communicate with Ihe operator
with a standard CRT terminal. It is also possible lo connect
graphics cards into Ihe system lo display high resolution
pictorial information of 640 by 480 pixels lo 1024 by
1024 pixels in 256 colors out of a palette of 262,144.
The user cut easily install one or more of these graphics
controllers into Ihe same backplane lo control multiple
displays at once.
Another unique feature of the GESCOMP systems is their
networking capability. Using GESNET. a proprietary
network protocol from GESPAC. up lo 50 GESCOMP
systems can talk lo one another over 3.000 feet of coaxial
cable. Ihe Network operates at 800 kilobits per second and
achieves very high throughput thanks lo ils superior
CSMA/CA (Collision Sense Multiple Access / Collision
Avoidance) arbitration and ils Direct Memory Access
operation. GESNET's cost per node is a fraction of the
typical cost of more publicized networks such as Ethernet
or M AP.
A version of the GESNET controller board is to be released
by GESPAC for the VME bus. This connection will allow
GESCOMP systems lo perform as a front end processor
with VME based supervisors in a hierarchical, distributed
processing architecture. The network is totally integrated
into the disk operating syslem, thus allowing transparent
access to all resources. For instance, all graphic screens,
disk storage and communications ports are accessible from
any processor in Ihe network.
For use in the mosl sevtae environments, where mechanical
disk drives are not allowed, Ihe GESCOMP can run without
a disk. In this mode of operation, the systems can boot
from the operating systems and application programs
located in EPROM. The GESCOMP is also expandable lo
use a bubble memoiy cartridge syslem for use in Ihese
environments. Using GESNET. a disk based GESCOMP
50
Odcber '87
'68' Micro Journal
located in a clean environment can save as file server for
several ROM based GESCOMP systems on the harsh factory
floor.
The GESCOMP system uses a modular architecture with all
vital functions readily accessible behind the front panel for
easy service and expansion. The system is based on the
100 by 160 millimeter (4" x 6.25") G-64 bus Eurocard and
features a rugged DIN 41612 pin-in-socket backplane
architecture. The small form factor of the cards and the
superior DIN connector,, make the GESCOMP particularly
resistant to shock, vibration, and corrosion due to airborne
contaminates. GESCOMP is packaged in a table enclosure
for development or laboratory environment or in a 19" rack
for mounting in a NEMA enclosure or dir«ctly into the
application. Each GESCOMP includes a 200 Watt power
supply.
Other versions of the GESCOMP systems, using the 80286
microprocessor and the MS-DOS operating systems are also
available from GESPAC.
GESCOMP systems are available now. prices start at $3995
for single quantity orders of the basic system
configuration. OEM discounts are available for large
quantity orders.
# # #
BILL WEST INCORPORATED
174 ROBERTTREAT DRIVE
M1LFORD, CONNECTICUT 06460
203 878-9376
NEWS RELEASE
SYSTEM CONFIGURATION SERVICES
Bill West Incorporated is pleased to announce the
availability of system configuration services for users of
industrial computers. These services are intended to assist the
user in selecting and integrating a system with appropriate
interfacing and system software for particular applications.
BWI specializes in systems using the VME and STD bus.
single board computers, and the OS9 operating system. BWI
will develop drivers and software libraries to allow simple
control of I/O devices from assembly and high level
languages. BWI can supply tested systems configured to
customer requirements, with ihe OS9 operating system
installed.
I/O EXPANSION
Bill West Incorporated currently has under development a
line of products which allow the use of the STD BUS as an
I/O expansion bus for VME, single board. Macintosh, and
Atari ST computers. This allows the wide variety of existing
STD bus interfaces to be used with ihese powerful computers.
The STD BUS may be configured as a bus extension or as an
intelligent subsystem. Communication between the master
processor and the STD BUS is via the Motorola I/O channel.
SCSI port, or ARCNET interface. Existing STD systems
using non- Motorola processors can be incoiporated into a
larger system using a 68000-type processor as the master
processor. These products will be available in ihe fourth
quarter of 1987.
ABOUT BILL WEST INCORPORATED
Bill West Incorporated was founded in 1985 to provide
systems and support lo users of industrial computers. We
have worked with OS9 systems since 1980. In addition to
extensive experience in implementing microcomputer
systems, BWI personnel have experience in many aspects of
system implementation, including analog and digital design,
system specification, system documentation, and the
integration of minicomputers and microcomputers into large
systems.
V T«HNOLOOI«
22*1 i. lllf A*».
vtom*, ac. aw* vw \V
NEW PR00UCT SNIWUHCtwEItT
Sard 5 Technologies are pleased to ar>iounce their new IMC
floppy disk controller that Is compatible "1th all three of
Tandy's Color Computer models. Including the new CoCo 3.
Ttie performance of Hlcrgware's mult t-user. mult t-t asking,
OS-9 operating system is greatly enhanced by the IMC
controller's new "no halt" node, which frees up the CoCo's
6D09C microprocessor to execute other tasks while disk 1/0
Is taking place.
The DHC controller is designed around the Western Digital
WU177J floppy disk controller chip, «k or 3?K bytes static
RAK, and a IS bit counter. Sufficient on-board logic Is
provided, that once the read or write operation has been
Initiated, the controller can transfer data between the
buffer RAM and the disk drive all by itself, with no
involvement of the main processor. Interrupts can regain
unmasked and available. The buffer RAH 1s large enough that
even a full track write, such as performed while formatting
a disk, can be done using the "no halt" mode. However, the
original Radio Shack "Halt" node is also retained to
maintain full compatibility with existing non-0S9 software.
The "rist noticeable benefit of the "no halt" node Is that
the keyboard remains "alive" during disk t/0. with no lost
characters when using OS-9's type-ahead feature. Compiling
a program in the background while simultaneously edlttlng
anotner file is no longer the exercise In sheer frustration
it was with older CoCo olsk controllers. The overlapping of
one task executing while disk t/0 1s taking place for
another task can also contribute to an increase In total
throughput .
A specially adapted version of O.P. Johnson's S01SK package
is included with the ONC at no extra cost. In addition to
being able to read/wrl te/foraat virtually any OS-9 disk
format. S01SK also has calls to read and write data from
non-0S9 disks. This allows S01SK to support several other
packages such as O.P. Johnson's PC-IFtR package (available
separately for 545) wntch reads and writes 1BH-PC format
disks.
A 2* pin ROM containing Radio Shack Disk Extended BASIC
version 1.1 Is normally installed, but provision IS made to
also accept 28 pin EPROH's, ranging from a 2764 to a 27256.
If users wish to have two DOS's (eg. Radio Shack's DOS 1.1
and Spec troSyst eos ' A00S) present in the controller, an
optional external switch can be installed to select between
the upper and lower half of the EPS*, with each half
containing a different DOS. The DOS's may he either UK or
16* bytes in size.
The UHC controller comes in a black, aluminum case, ready to
plug Into the CoCo's Multl-Pak Interface (or compatible
unit). Gold plated card-edge connectors ensure reliability.
Use of the Western Digital WD1773 control ler, with all-
digital data separation and write preconpensat Ion, means
that no adjustments are required. The OHC has been designed
to run at both .B9S HHi and 1.79 MHz CPU speeds.
The 0MC controller Is available today, at a unit price of
(JUS) (149. SO with RS-D0S 1 .1 . 8K buffer RAH, and either the
Level 1 or Level 11 version of S01SK. For more Information,
write, or call Dave Miens at (6D4) 2S5-4W5 (Pacific time).
'66' Micro Journal
October's?
51
Continued From Last Month
Xbasic Xplained
or
Things you won't find in the documentation
Copyright 1986 by
R. Jones, Micmnics Research Corp.,
33383 Lynn Avenue, Abbotsford,
British Columbia, CANAOA V2S 1E2
& Computer Publishing, Inc. (CPI) O 1987
The material in this article is copyright*! by Micronics Research Corp. A Computer Publishing. Inc. (CPI). and
reproduction, in whole or in part, by any means is prohibited without the express written permission of the author and
CPI.
MAXIMUM LINE LENGTH
Earlier on 1 mentioned that the maximum input-line length in XBASIC was 255 characters (not 127 as stated in
TSC'i article). A 68MJ reader in Australia questions this, as he has tried several configurations of input-lines, and
found that (depending on the nature of statements in the line) the maximum acceptable to XBASIC was a variable
amount. I think the most he could get was a 149-character line - a long, long way from the supposed 2551 Perhaps I
should have emphasizes that the maximum is 255, which is not to say that you'll always gel thai number per line.
Let me elaborate. XBASIC has two 255-characier buffers - one of which (we'll call it "A') accepts characters as
they are entered from the keyboard, and the other (well call this one 'B') is used to tokenise your inpul-iiiie and parse it
before storing it into your main pr<»^. «m. Now, if you'll casi your mind back to the beginning of this series, you'll
recall my example of t few pr : lUtive line-entries and their corresponding tolceni&ed lines, and how amazed we were al
the disproportionate amoui., of code that saemed to be generated. Herein lies the key to the '255' problem. If, due lo
the nature of the line keyed into Buffer A, the tokenising happens to generate lest code in Buffer B £.•-. ,l, »re is in
Buffer A (and it can happen!) then you can fill up with 255 characters in Buffer A. On the other hand, if Butter A
generates more code in Buffer B, then Buffer B determines the limit of 255 al which to cut off lokenising. Hope this
makes it all perfectly clear!
RANDOM FILES
A few readers have written me on the subject of Random Files, which seems to indicate thai their use gives tise lo
little difficulties now and then. Perhaps I can best illustrate the most common problem by reproducing the essence of a
little program which appeared in the May 1982 issue of 68 Micro Journal. Here's the program :
10 PRINT "FILE CREATION PROGRAM"
40 DIM Q$(5)
50 OPEN NEW "CHECKJTLE" AS 1
60 FIELD »U 50 AS Q$(l). 50 AS Q$(2). 50 AS Q$(3),50 AS QJ(4),50 AS Q$(5)
70 FOR 1 = 1 TO 5
80 Q$(l) - " 50 spaces "
90NEXTI
100 DF - 200
1 10 FOR 1 = 1 TO DF: PUT #1. RECORD I: PRINT I: NEXT I
150 CLOSE 1: PRINT
180 PRINT "DONE WITH FILE CREATION"
Although this program may appear to be quite straightforward, it nevertheless demonstrates an incomplete grasp of
random files and how to create them. So, at the risk of repeating stuff which most readers already know, we'll lake it
from the beginning. But first, try entering and RUNning the program yourself. You should observe the program
displaying the opening message, then a 1, followed by a long wail, then a rush of 5 more numbers, another wait, 5
more numbat, and so on till it reaches a count of 200. at which time Line 180's message will be displayed. All well
and good, il seems. But, if you have the means to examine the file on disk with DISKED1T, you'll find 200 records
there. Tilled completely with 00's (NULs) instead of '20's (SPACEs). So what's wrong then???
Let's repeal the above, replacing the 50 SPACEs of Line 80 with a message such as 'Hello World" and pad out lo a
total of 50 spaces. Again we would find a file of 200 records filled with '00's. even though Line 110*s job is to create
52 October "87 '6B' Micro Journal
200 records, each of which should consist of 5 sub-records composed of "Hello World". Why didn't (his happen? OK,
random-tile tutorial coming up ...
The program is good down to Line SO, where an instruction to open a file named CHECKFILE on Channel I is
encountered. As a side-note, the file will not actually be opened until the first attempt to GET or PUT a record to it.
Line 60 is also OK, where we define each record as being composed of, or FIELDed as, five sub-records of SO characters
each. But, and what a big BUT it is. we then proceed in Lines 70 - 90 to completely cancel our Line. 60. You see, you
can only put data into, or modify, the various FIELDs by means of the LSET or RSET statements. By simply defining
the five *Q$'s with an ordinaiy LET (or implied LET), any prior definition using the same variables is effectively wiped
out. Line 80 should therefore have read :
80 LSET Q$(T) = " ... message ... "
without the need of any trailing SPACES, as the FIELD statement would automatically pad out to the defined length
of 50.
Our program is quite workable at this stage, but why does the displayed count go in little spurts? The explanation
is that when a random-file is first created. XBASIC allocates only one record to the file. Actually it reserves 3 sectors,
but the first two are used for 'housekeeping' purposes. Sector 3 being our actual Record #1. So, when our Line 110
(110 - 140 in the original program) PUTs the first record to the file, all available sectors have been used up, so the
FMS section of DOS lakes lime out to extend the file a little before it can PUT a few more. The original program is, of
course, PUTling absolutely nothing into each record - not even a sub-record, due to the cancellation of the FIELD
statement - which accounts for the completely NUL file. All that the program is doing is to extend the file a little at a
lime as the program loops from 1 to DF.
A belter approach would have been to extend our file out to 'DF (that is. 200) records before we begin PUTting
anything at all. To extend a random-file, we merely PUT to a non-existent record, and the file will automatically be
extended to that limit. Thus :
100 DF = 200: PUT #1. RECORD DF
It will lake a little while to extend to 200 records, but then you should sec the numbers 1 to 200 just a-clicking up
on the screen with no pauses between.
EPILOGUE
In bringing this discourse to a close, I'd like to raise a subject which should be of interest to a large number of our
readers. As most of you know, I've bean studying the inner workings of XBASIC for some years now, working out
patches for this and thai, or modifying it so it can call BEDIT (an XBASIC line-editor) directly from XBASIC itself. In
fact, it was my initial patch to allow BEDIT to be called directly from XBASIC with the command 'EDIT thai prompted
this series in the first place. All this has really been slop-gap, finger-in-the-dyke patching, so some time ago / decided
to writ* my own BASIC - to be called RBASIC ('R' for 'Robert', my first name).
It's reasonably complete now (in fact, it's been undergoing beta-testing for several months), and will almost
certainly be so by the lime XBASIC XPLANATIONS goes into production. So. though I've obviously had to make il
compatible with XBASIC, so you don't have to scrap all your old XBASIC programs, il differs considerably in several
major respects. In general it incorporate* all those features which for so long I've wished XBASIC had, and at the same
lime eliminates some minor annoyances, the end result being :
1. It's been wiitlen directly in optimised 6809 code, instead of 'warmed-over' 6800 code.
2. It doesn't have any of the known XBASIC 'bugs', such as the erroneous 'Missing Parentheses' or flawed
floating-point malh.
3. T has been added as a short form of 'INPUT, similar to '?' for PRINT
4. It includes the function ARC, so thai ARCSIN, ARCCOS and ARCTAN may be implemented, though for
compatibility's sake I've had to retain the oiiginal ATN function as well.
5. CHAIN allows CHAINing to a file with any extension, though the file to which il CHAINs has lo be of the
same type as that currently in memory, i.e., either all BAC files, or all BAS files, unless the extension .BAS or .BAC
is specifically given, in which case il is possible lo switch from one type lo another.
6. XOR (Exclusive-OR) logic -operator has been added lo allow more sophisticated logic manipulation.
'68: Micro .loumal October's? 53
7. APPEND command added to allow another program to be APPENDed to the end of the one currently in
memory. This allows libraiy-files of useful .BAS routines to be created and called up as necessmy during new program
development, for incorporation into the program.
8. LIST has been expanded, not only to allow let's say 'LIST 100-' to UST from Line 100 through to (he end of
the program, but il now allows commands such as 'LIST 100.200-300,700 to be implemented. The function of the
latter is, I Chink, self explanatory.
9. The 'FLEX' command has been replaced by a 'DOS' statement, allowing programs to exit gracefully under
program-control. Thus statements of the form '100 IF X > 7 OOTO 300 ELSE DOS' are acceptable to RBAS1C.
10. Similarly, the commands TRON and TROFP have been replaced by a single statement TRACE'. TRACE 1'
rums the TRACE-mode ON, TRACE 0' ntms it OFF, while TRACE 125' causes the program to TRACE for 125 lines
then tum itself OFF (maximum 254). This makes for a veiy powerful debugging tool, especially as the TRACEd
Line-Numbers are now displayed horizontally, instead of merely one per line. Statements along the lines of the
following may thus be inserted into a buggy program for testing :
100 IF X > 7 THEN TRACE 200 or 100 IF A$ - BS THEN TRACE 1
11. Most importantly, it includes a built-in line-editor with the following features :
a. Instant recall of an erroneously-entered line which has just been
rejeclad by RBASIC for some syntax error.
b. Editing of any specified program line, ie EDIT 100.
c. Full cursor-control, LEFI\ RIGHT, UP and DOWN. Why UP and DOWN, you
ask? just in case you're editing a 255 character line, and wish to
do some editing in the middle of the second displayed line.
d. Express RIGHT/LEFT cursor positioning for moving quickly from one end
of a line to the other.
e. INSERT, DELETE and OVERLAY, plus SPLIT and MELD. SPLIT will (as its
name implies) split a line into two individual lines at the cursor-
point, usually at a colon. MELD, on the other hand, will meld, or
join together, two successive program lines, with automatic deletion
of the second-line's line-number, and its replacement by a colon in
the expanded line. This, obviously, is only a brief outline of what
can be done with this new Line-Editor.
Plus several other features, such as :
(i) being able to CONTinue after BREAKing on INCHS(O)
(ii) being able to LIST a BAC file for amusement or informative
purposes.
(iii) bringing GOSUB into line with GOTO, in that it doesn't require a
mandatory THEN preceding il in IF-THEN clauses. Now the statement
IF A>B GOSUB 50' is equally acceptable.
(iv) Just loads of other features . including some veiy powerful debugg-
ing aids, which are detailed in RBASIC's accompanying Instruction
article.
Recently added is 'PDEL' to allow a command such as PDEL 100-200 to delete the named block of lines (with
emb*Ll«d precautions to protect the User, of course).
The RENUMBER command (now named RENUM) has also been completely rewritten, with all known bugs
removed. Now it will correctly process lines containing statements such as '100 IF ERL = 75 GOTO 950', and also
lines of the form '100 IF X = 7 GOTO 950' where line 950 is non-existent. It will not leave you unaware of the fact
that your program will now GOTO a new Line 950 created by the RENUMbering process. Of course, the Precompiler
has also had to be re-worked, so it will recognise and process all the new statements of RBASIC. However, this
program has not been re-wiilten (only patched) as it appears to have no problems and has remained unchanged for some
years, thanks to TSC's policy of producing only quality software.
Keeping in mind that BEDIT, or other similar add-on Line-Editor, eats up lots of valuable memory-space,
sometimes as much as between 1500 and 2000 bytes, you may be wondering just how long this new RBASIC is. seeing
54 October '87 '66' Micro Journal
thai ii include* the very versatile, and muck more powerful EDIT command, plus the extras mentioned above, such as
ARC, and other features too numerous to detail. Would you believe that in spite of all these additional goodies it's still
currently about 1000 bytes shorter than XBAS1C? In addition, due to improved algorithms, more efficient coding and
so on, it executes a little faster than XBASIC. Time-comparisons indicate a speed-up of approximately 10% to 16%,
depending on the function being performed. In response to reader feed-back, we intend to add as many features as
possible, before marketing later on this year (1987). So if you've been concerned about some of the limitations of
XBASIC, or are considering an 'add-on' line-editor (which only eats up vital memory), you should maybe hold off for a
while.
1 hope sincerely that you won't take this as a put-down of XBASIC. This has been a wonderful program (one of
the best BASlCs around, in my opinion), but its days are numbered, especially as TSC has apparently moved on to
better things (such as the 68020) and no longer seems to be supporting it. I've given up on just patching it, as the
coding was gelling a little out of handl One can only go so far in adding extra floors lo a building, then there comes a
lime when the project has to be scrapped, and a new strucluie built from the ground up.
IN CONCLUSION
I'd like lo hear from friends old and new if you have any ideas for incorporating into RBAS1C, though I'd still like
to keep it as compact as I possibly can. My main problem is going to be a shortage of available code-numbers for ihe
extra tokens, so I'll have lo give priority lo the most generally useful.
So goodbyel 1 hope you've enjoyed reading this article as much as I've enjoyed putting it all together.
** TSC, where used in this article, refers to Technical Systems Consultants, Inc.
Editor's Note: RBAS1C U also being developed for the SK'DOS 68000 series and ihe MUSTANG-OS™ from
Data-Comp. We will certainly let you know as soon as ii is ready for shipping. Beta testing is in progress now. Also
watch for a new C compiler for SK*DOS and the MUSTANG-08. Inings are moving!
DMW
EOF
FOR THOSE WH
68 MICRO
JOURNAL
J
Clearbrook Software Group (604)853-9H8
CSG IMS is THE full featured relation-
al database manager for OS9/OSK.
The comprehensive structured ap-
plication language and B + Tree Index
structures make CSG IMS the Ideal
tool for file-Intensive applications.
CSG IMS for CoCo2/3 OS9 L1/2 (single usar) $169.95
CSGIMStorOS9L2or68000(multlu*er) (495.00
CSG IMS demo with manual $30
MSF - MSDos File Manager for CoCo 3/OS9 Level 2
allows you to use MSDos disks directly under OS9.
Requires CoCo 3. OS9 L2. SDISK3 driver $45.00
SERINA - System Mode Debugger for OS9 L2
allows you to trace execution of any system module,
set break points, assemble and disassemble code and
examine and change memory.
Requires CoCoS or Glmlx II. OS9 12 & 80 col. terminal $139.00
ERINA - Symbolic User Mode Debugger tor 0S9
lets you find bugs by displaying the machine state and
Instuctlons being executed. Set break points, change
memory, assemble and disassemble code.
Requires 80 column display, OS9 L1/2 $69.00
Shipping: N. America • $5. Overseas - S 10
Clearbrook Software Group P.O. Box 6000-499, Sumas, WA 98295
OS8 w « uirfTTjm o< Utoiri Bytmrn Oorp , MSOat a a tadwnarti at Mtcroofl Cotp.
'66' Micro Journal
October's?
55
f r^laccjfipHc As Sunmiued - No Guarantees j
(F
AT&T 7300 UNIX PC, UNIX V OS. 1MB Manny. 20 MB Hard
Disk, 5" Drive. Inunui Modem, Maiu. BcM Offer Gcfi U.
S+ Syitem with Cabinet, 20 Meg Hard Disk A 8" Disk Drive with
DMAF3 Controller Board 1-X 12 Terminal S48O0.
DAISY WHEEL PRINTERS
Qume Sprint 9 - S900
Qume Sprint S • $800.
HARD DISK 10 Megabyte Drive -Seagate Model #412 5275.
3 -Ekial 8* drive enclosure wiihpoweriupply. New in box. S 123 each.
5 - Siement 8" Diak Drive . J 1 00 each.
Tano Outpost II. S6K. 2 5" DSDD Drives. FLEX. MUMPS. S4M.
TELETYPE Mode) 43 PRINTER • with aerial (RS232) interface and
full A5CD keyboard . $250 ready to run.
SWTPC SAW with MouxoU I28K RAM. 1-MPS2, l-Paialell Port,
MP-09CPU Card - S900 complete.
Tom (615) 842-4600 MF 9AM to 5PM EST
I Want To Buj
*68 DMA FDC. Price and details to
Roger Steedm an
RMB 9010
Oroeo Hwy Sanfield
3883 Australia
NEW!
Color
Computer
"NO Holt"
Disk
Controller
Old you knew?
. thst all Iho older floppy disk controller* 10* the CoCo oomplaiflly ite up land
even hall) |ha 6809 processor during disk reads and writes? No wonder your
keyboard la constantly "losing" characters! Or that your aerial port oiler gives
you Garbage
Unlvaah j/9vr CoCo'» paUntlelt
Our new Oual Mode Controller (DMC) Implements s new "no hall" mode of opera*
Hon so II can read from or wrlle to disk all by llaell. The 6809 la freed to process
other tasks and respond to Iniernjpta. This la how 05-9 was meant to runl But ihe
Radio SUack "hair mode of operation «a also reiatned to malniain full com
paliblllly wllti ealallng non-059 aollware
Oth«r DMC f»»lyr.»:
■ works with original CoCo. CoCo 2, or CoCo 3 |Multl-Pak required]
• no adjustments - alldlQHaldata separator and write precompensalton
» gold plated card-edge connectors lor reliability
• ROM socket takes 24 pin or 26 pin chlpa; dual DOS capability
■ Radio Shack DOS 1 1 ROM Insialled
• 6K bytes cache memory on board |3?K bylea optional)
■ includes DP Johnson's SDlSK package specially mod I Hod for ihe DMC
• fully assembled and lasted; (20 day limited warranty
To •rden DMC controller wllli RSOOS 1.1 end SDISK {Level I or II) $148 50 plus SS
S/H |$12 overseas). Terms (prices in SOS) check, nwney order, VISA
(trademarks OS9 — Micro ware and MolOtOla)
(604) 266-4486 (Pacific Time)
Our ST 2900 SBC is aim avallaole,
call or write lor calalooy price-list.
~~ C<HN<OLOOIC^
2261 East 11m Ave., Vancouver, B.C., Canada V5N 127
=^
!!! Subscribe Now !!!
68 MICRO JOURNAL
OK, PLEASE ENTER MY SUBSCRIPTION
Bill My: MastacardQ VISA[~l
Card # Exp. Date
For 1 Year 2 Years 3 Years
Enclosed: $.
Name_
Street
City
My Computer Is:
State Zip
Subscription Rates
U.S.A.: I Year $24.50, 2 Years $42.50, 3 Years $64 JO
•Foreign Surface: Add $12.00 per Year to USA Price.
•Foreign Airmail: Add $48.00 per Year to USA Price.
•Canada & Mexico: Add $9.50 per Year to USA Price.
•U.S. Currency Cash or Check Drawn on a USA Bank !
V/SA
%z
68 Micro Journal
5900 Cassandra Smith Rd
POB 849
Hixson.TN 37343
Telephone 615 842-4600
Telex 510 600-6630
mastercard
J
56
October "87
68' Mcro Journal
K-BASIC™
The Only 6809 BASIC to Binary Compiler for OS-9
FLEX or SK*DOS
Even runs on the 68XXX SK*DOS Systems*
,-..— ....... N
Hundreds Sold at \
Suggested Retail: i
0100.00
I
• 6809 - OS-9™ users can now transfer their FLEX™
Extended BASIC (XBASIC) source files to OS-9, com-
pile with the OS-9 version and run them as any other
OS-9 binary "CMD" program. Much faster than BASIC
programs.
• 6809 - FLEX users can compiler their BASIC source
files to a regular FLEX '.CMD' file. Much faster execu-
tion.
• 68XXX - SK'DOS™ users running on 68XXX systems
(such as the Mustang-08/A) can continue to execute
their 6809 FLEX BASIC and compiled programs while
getting things ported over to the 68XXX. SK'DOS
allows 6809 programs to run in emulation mode. This is
the only system we know of that will run both 6809 &
68XXX binary files.
K-BASIC is a true compiler. Compiling BASIC 6809 pro-
grams to binary command type programs. The savings
in RAM needed and the increased speed of binary
execution makes this a must for the serious user. And
the price is now RIGHT!
Don't get caught up In the "Learn a New Lan-
guage" syndrome - Write Your Program in
BASIC, Debug it in BASIC and Then Compile
it to a .CMD Binary File.
For a LIMITED time
save over 65%...
This sale will not be
repeated after it's
over! *
............ N
SALE SPECIAL:
$69.95
■
I
■
I
i
■
V,
SPECIAL
Thank-You-Sale
Onfy from:
c
S.E. Media
p
i
3900 Cassandra Smith Rd.
Hlxsort, Tn 37343
Telephone 615 842-6809
Tefex 510 600-6630
A Division of Computer Publishing Inc.
Over 1,200 Titles - 68or>68(&68OO0
* K.BASIC wiD iui wider 68XXX SK'DOS in onulain male far (he 680».
•» *
Pike vbjta to dinge wUkm mice
'68' Micro Journal
October's?
57
SK* DOS
J7W G#o#fHT DOS ™ 1or 60000 *PPTk«1 ten i>n
* induitrid Control
* 8yi.o*0 Ut*
* 6duc«iton»l Compuiinff
* SchciCi'* Compudnf
+ nHimW C/wrxhing
* D«0*Ce><td Svttomi
* Tu*nfciy Svtlvnn
* DttaColFedtan
* S> n ) *'Oo**'0C<y-VMt«ri
* But on«o(ed Corripuwri
* Grwhics WfrktUtlOfii
* On«ol c-ltlnd Syitami
* Affvantad Hobbytt UW
Sit* DOS n a wgU- mar ** oot»»('"9 w>t*m 'a* •on> v ut*ri v iing Motorola 32 bit C**U»
mch oft (»H 6011)6. 6BCCO, SflOlO. *nd fiflOTQ M pw«1m Itw P©*»» ol i f\*U DOS, yd ii
simpte and mw lo use, and w*A f«o on fy*f*ym from 3JK to 16 magabyin. Pa- ana
$K *OOS a aawty imp(am«nitd on a o#w tyrt«rr\ wr# call 41 "Th» Cnnrc OOS" *f>Ch
«1lo*v« piooramt writ ten lurom fVlttrft la be run on many olhtft
SK«DOSc<Vn*» wrtti ovrWcomiyrdi and «V»t*mpcoorimi, including a 6909 tmulilor
wrhech ■llorteflK SK«DOSlonjn •wife*, on Programnndlanguaon dtvt).op«J lo* 6809
SKfrDOS and oUhtt fyrtsmL Axwn*>«n, «j.i<xv and hiahar laval lanojaov fuDOOM art
•vailabla fnovn thvd party ioltwar« vondon and (hroufjh DubtK dom am iofrw»r t
SK-OOS it wMtabla tor untjtocooyty (Mate* u*Afl m<i «OEM l-cenvrnj &nol v coiva
con J124finp»if» as to avatlabta «y ttami|< EKiramaty amactrwOEM Iromvnv tavmtara
aJw available An optional ConhawrttKW Kit tont*«ni idrUtM ConhQtf niton Manual
and two it>*i ol wu-x* ooda (or tytwn fdvOtat^on. including towrft cod* lor a ty*t*m
monilor/dafJUB BOM »txt ot*a» p/op/arfif uMful lor adaori^g SK*OOS to "rw lY.wrtit
SK-DOS
<i trstiabt* ttotn
Star-K
..SOFTWARE SYSTEMS CORPORATION
»0 SOX JOS MT KISCO. NV 10M» iltlHOlll
T€LrX5lO«)l«7;4
INDUSTRIAL PASCAL FOR 68000 AND 6809
PCSK Is a package that generates code lor a 66000 series processor
running on a 68000 development system it includes the compiler,
assembler, linker, host debugger, target debugger, and screen editor,
all Integrated together and controlled by a menu driven shell program
Source code rs included lor the runtime library and many ol the
utilities Host operating systems supported are OS-9/68000
(Microware). POOS (Eyring Research), and VEflSAdos (Motorola)
PXK9 is a package that generates code lor a 6809 processor running
on a 68000 development system includes all ol the features ol the
PCSK package above, except tor the host debugger Host operating
system is OS-9/68000
I WANT IT. WHERE DO I GET IT?
For more Information on either ot these two products please contact
Certified Soltware, South East Media, or one ol our European
Licensees
OEM LICENSEES
Gespac sa. 3. chemin des
Aui* CH-1228 Geneva /Pian-
tes-Ooales. Switz TEL (022)
713400. TLX 429989
PEP Eleklronik Systeme
GmbH. Am Xloslerwak) 4.
D-8950 Kauibeuren. west
Germany TEL (08341) 8974.
TLX 541233
Ellec Eleklronik GmbH.
Gallleo-Galllei-Strasse. 6500
Mainz 42, Posttach 65. West
Germany TEL (06131)
50031. TLX 4187273
DISTRIBUTORS
R C S Microsystems Ltd
141 Uxbrioge Road. Hampton
Hill. Middlesex. England TEL
01-9792204. TLX 8951470
Or Rudoll Kell GmbH. Por-
phystrasse 15. 0-6905
Schrieshenn, West Germany
TEL 062 03/6741. TLX
465025
Eisott AG. Zeigweg 12.
CH-5405 Baden-Daettwn
Switzerland TEL
056-833377, TLX 828275
Byte Studio Borken. Buten-
wall 14. 0-4280 Borken.
West Germany TEL
02861-2147, TLX 813343
CERTIFIED 616 CAMINO CABALLO NIP0M0. CA 93444
SOFTWARE TEL (805)929-1395 TELEX 467013
CORPORATION FAX (805) 929-1395 (MI0-8AM)
SOFTWARE FOR 680x AND MSDOS
SUPER SLEUTH DISASSEMBLERS
EACH S88-FLEX *1 01 -OS/8 SIOO.UNIFLEX
OBJECT-ONLY v.nlont EACH ISO-FLC X OS9 COCO
ntaractnsty oansme tourta on 3a* KB tM. «*aja nr. b«xar» xMng
tpKdy e«00.1.2.3,5.B.».«SO! van-on of ZeovSOM.5 iramon
Q&9»wrormioBfiin PUBtrnei aoetJWtlllil
COCOOOSnUlbtolneSOO.lJi.SJ.S.aWQZ vwikm (not ZBOaoaO.S) only
NEW: ««010 dlulMftiblai *100-F1 EX.Od7S.LINIPLEX.OSi9-*«K.MSDOS
CROSS-ASS MBLERS WTTH MACRO CAPABILITIES
EACH f50-FLEX,OS(S.UNIFlEX,MSDOS.UN1X 3/S100 ALUS200
«>«iiy 1 80..eso) «« 1 eeo* seas taaa.za 7»o ewe eos 1 was wo > jmoo
modular sras -rwamblsni « C, van roaoVunioerJ dWM NOW OSMW
■ma lor arJiManat $90 Mch. SlOOtof 3 «OOk»«l
OEBUOOMO SMULATC4«RjnPC<HJLAna-BlTMICROPHLXZSSDRS
EACH S75-FLEX tlOO-OS/t SSO-UNIFLEX
0»jeCT-ONl.V v*f«lgfie: EACH ISO-COC O FLf X.COCO OSVO
rto.«-trv«<> ilmJaM vnxmotn. ndurh aammmOf tarmanng. ami, Mtng
•OfKily tor 6800(1. (MrSSOS. SMS. teM OS/8. ZM nEJf
ASSEMBLER CODE TRANSLATORS FOR 851)2, 8800ri, 6808
esoe u eaos m-n.f.% hwjsvb sk-unifiex
eeoo/i is eaos « eeo* is prMttavwi ijo-flex 17vos,-b mo-uniflex
FULL-SCREEN XBASIC PROGRAMS mm curw cwtvci
AVAILABLE FOR FLEX, UNIFLEX, AND MSDOS
DISPLAY GENERATOfWOCUU EMTOR »S0 w'MurU , »5 wltlMKll
MAILING LIST SYSTEM ItX WlUUiet. ISO ntHhoul
WVE ffTOflY WITH MR P 1 1 00 » >DK r c». IH » 1 Ih oui
TAnAArUSASP^AOSXET 1 100 Mm>, ISO w***l
CHSK AND XBASIC Lmunr PROGRAM LIBRARY
tSO-FLEX t3r>UNIFLEX/MSDOS
XX (MX Hdm. nt ifeaoorr. munurt nf* mlniQ 00 01* (oru,
mi|riirn-r ol BASIC invw^. inl OXSC pnmm. «|c
rovFLEX inn retch aorl and w ■■«■■■ om«
CMOOEM Tfi UTTMUtftACATIONS PROGRAM
$100-FLEX,OS/9,UNIFLEX,MS-OOS,OS/9-S8K,UNIX
OBJECT-ONLVMrtloni EACH ISO
nv4w wWi kmW mod*. «• nnaV. MDOEM7. XON XOFT. Mc
to COCO w«« navCOCa 0>u« IX CQCD mkn Don MP B 2400 EHud
DISKETTES & SERVICES
5.2S" OISKETT S
EACH 10-PACK 512.50 SSSDSSDODSDD
■nbmli.piM 1O0%ow*»|. Mt> T|N«>|adM«. nutmnoi an) t
ADOmOMAL SERVICES FOR TME COUPVTMG COMMUNrTV
CUSTOMIZED PROGRAX4HWG
w« w* aama any of ffw programs aaa gt at tf in ih* aoV»> teaman or m aur
diooHot tor tpMaamad aattrnav ua* or ko ao%w naw proanm: tf« diarpa
lor aao*i oaajn^faton oa^vxh upon ffv n>si\aubM7 ol rrvrrajnaeom
CONTRACT PROGRAMUB4G
w« wM awtm nsw p^aama cr morJTy a^raang (fod/v** on a oartjad oaa*.
> larwaaa nsva pn»«»«i lor ova» t^tni yaara. tia a»n»«ari onmncx w
ftaws)|jay%affaaanrsraaiFiV» l ' l »a>rira^f W aaP [ aju'aT m)ai ol
noaaa ol n»«»T»*»%. noUkv (JEC. EM rjrj ta> AT »T. ana fral
papuur UinrM ol mnransvvn. nckong BlOOVt. EMM. MO. BSOJ.
BfXXXL usVq meal apprcenka) la^iaaa anrjapvaB% ayaaFm. on afffcr*
rangtif nui irorti Urga I aan 1 irKMm to atigra rjoars m rt i oiwt .
rna tfiji lor cant act vivanawaj « inry by *l* how or by ma laak
CONSULTING
m* ofav a i*rda rajaaj of buanas ana ao-nral cmraavaj aravcaa, aio\xft^
•amva.arMca.varwo, and aoiorv 00 any i»c -*a«i ti o»hiiv
Computer Systems Consullsnls, Inc.
1454 Latls Una. Conyers, GA 30207
Telephone 404.483-4570 or 1717
Wa lake orders at any lima, but plan
long dlacuaaiona alter 8. If possible.
Contact ua about catalog, dealer, dlacounta, and services
Mosl programs In source: give computer, OS, disk elze.
25% of) multiple purchases of ssme program on one order.
VISA and MASTER CARD accepted; US funds only, please.
Add GA salea tax (H In GA) and SS shipping.
(IJ«ir^CXaiiTiiy»wjj>»a»»GoraJanarOt3rS>Siiiaa]|.COOOTarvv>«OCBI(kj»ai
5«
October '87
■68" Micro Journal
THE 6800-6809 BOOKS
..HEAR yt. HCAR
OS-9"
User Notes
By: Peter Dibble
The publishers of 68' Micro Journal are proud Co make
available the publication of Peter Dibbles
OS9 USE! WOT IS
laformatlon for the BKGUTHER to t be PRO,
tegular or CoCo 0S9
Using 0S9
HELP. HINTS, PROBLEMS, REVIEWS, SUGCESTtmNS, COMPLAINTS,
059 STANDARDS, Generating a New Bootstrap, Building a
new System Disk, 0S9 Users Croup, etc.
Program interfacing to 0S9
DEVICE DESCRIPTORS, DIRECTORIES, "FORKS", PROTECTION,
"SUSPEND STATE", "PIPES", "INPUT/OUTPUT SYSTEM", etc.
rrograaslBg language*
Assembly Language Programs and Interfacing; Baslc09, C,
Pascal, and Cobol reviews, programs, and uses; etc.
Disks Include
■o typing ail the Source Listings la. Source Code and,
where applicable, assembled or conplled Operating
rro|riil. The Source and the Discussions in the
Columns can be used "as is", or as a "Starting Point"
for developing your OUN more powerful Programs.
Programs sometimes use multiple Languages such as a
short Assembly Language Routine for reading a
Directory, which is then "piped" to a Baslc09 Routine
for output formatting, etc.
BOOK $9.95
Typeset — w/ Source Listings
O-Hole Punelied: B * 11)
Deluxe Under --------
55. SO
All Source Listings on Disk
1-8" SS, SD Disk S14.95
2-5" SS. DO Dlaks $24.95
FLEX™
USER NOTES
By: Ronald Anderson
The publishers of 60 MICRO JOURNAL are proud to
make available the publication of Ron Anderson's fUU
OSIB NOTES, in book form. This popular monthly column
haa teen a regular feature in 6B' MICRO JOURNAL SINCE
1979. It has earned the respect of thousands of
68 MICRO JOURNAL readers over the years. In fact,
a column has been described aa tlie 'Bible' for 68XX
users, by some of the world's leading microprocessor
professionals. The most needed and popular 68XX book
available. Over the years Ron's column haa been one of
the most popular In 68 MICRO JOURNAL. And of course
66 MICRO JOURNAL is the most popular 68XX magazine
published.
Listed below are a few of the TEXT files Included in the
book and on diskette.
Alt TEXT files in the Book are on Ihe disks
LOGO CI File load Program (o oftsel memoiy — ASM PIC
MEMOVE C t Memoiy move program — ASM PIC
DUMP Cl Pnnler dump program — uses LOGO — ASM PIC
SUBTEST C1 Smutation 01 6800 code to 6908. snow difference? — ASM
TERMEM C2 Modem input lo disk (or other port input to disk) — ASM
M C2 Output a tile to modem for another port) — ASM
PRINT C3 Parallel (en hartcad! printer driver — ASM
MODEM C2 1TL Output to CHT and modem (or other port) — ASM
SCtPKG C1 Scientific math routines — PASCAL
U C» Mini-monitor, disk resident many useful functions — ASM
PRINT C4 Parallel printer driver, wiltiout PFIAG — ASM
SET CS Set printer modes — ASM
SETcWSl CS Set printer modes — A-8ASC
NOTE: .CI..C2, etc. -Chapter I, Chapter 2, etc.
•♦Over 30 TEXT files included Is ASM (assembler)-PA5CAL-
PIC (position independent code) TSC BAStC-C, etc.
Book only: $7.95 + $2.50 S/H
With disk: 5." $20-90 + $2 50 S/H
With disk: 8" $22.90 + $2.50 S/H
Shipping A Handling $3 .30 per Book. $2 30 per Disk set
Foreign Orders Add $4.30 Surface Mail
or $7 00 Air Mail
If paying by check - Please allow 4-6 weeks delivery
' All Currency in U.S. Dollars
Continually Updated In 68 Micro Journal Monthly
Computer Publishing Inc.
5900 Cassandra Smith Rd.
Hixson, TN 37343
1
"FLEX (a a trademark of Technical Systems Consultants
"0S9 is a trademark of Mlcroware and Motorola
"68' Micro Journal la a trademark of Computer Publishing Inc.
(615)842-4601
Telex 5 106006630
'68' Micro Journal
October*?
59
w9 B «7 KOFTWAKl
L1 UTILITY PAK— Contains all programs formerly in
Filter kits 1 & 2, and Hacker's kit 1 plus several
additional programs. Complete "wild card" file
operations, copies, moves, soils, del, MACGEN shell
command language compiler. Disassembler, Disk
sectoredit utility, new and improved editions, approx.
40 programs, increases your productivity. Most
programs applicable for both level I & II 6809 OS-9.
$49.95 ($51.95)
Call or send Self Addressed Stamped Envelope for
catalog of software for color Com puterOS-9 and other
OS-9 systems.
BOLD prices are CoCo OS-9 format disk, other formats
(In parenthesis) specify format. All orders prepaid or
COD, VISA and MasterCard accepted. Add $1.50 S&H
on prepaid, COD actual charges added.
ss-soc
MEMORY LIQUIDATION SALE!
(While Supply Lasts)
1 MEGABYTE RAM BOARD
Full megabyte of ram with disable options to suit any
SS-50 6809 system. High reliability, can replace static
ram for fraction of the cost. $3 99 for 2 Mruor $439 for
255 M hz board assembled, tested and fully populated.
2 MEGABYTE RAM DISK BOARD
RD2 2 megabytes dedicated ram disk board for SS-50
systems. Four layer circuit board socketed for 2
Megabytes) Special sale price of $399.00 includes only
256k of ram installed (you add the rest), includes OS-9
level I and II drivers for Ram disk, (note: you can re-
boot your system without losing ram-disk contents).
(Add S6 shipping and Insurance.)
Please call for answers to your technical questions
concerning these products.
D.P. Johnson, 76SS S.W. Cedarcrest St.
Portland, OR 97223, (503) 244-8152
(For best service call between 9-11 am Pacific time.)
OS 9 is a trademark ol Microwave and Motorola Inc.
MS. DOS is a trademark ol Micro toft Inc
DATA-COMP
SPECIAL
Heavy Duty Power Supplies
For A amlted tlma our HEAVY DUTY SWTCHWG POWER
SUPPLY. These are BRAND NEW units. Note that thus*
prfcM are tea than 1/4 the normal price tor these high
quality unKs.
5900 C^jaanrire 9mtt> Bd, Moon, Trt 37343
Telephone 615 842-4600 Telex 510 600-6530
Make BtsAert
Size 10.S x 5 x 23 inches
Including heavy mourning bracks and haftanfc.
RaCng: in 110/220 vote ac (soap change) Out 130 was
Ouqao: +5v • 10 amps
+12v . 4.0 ampi
+12v - 2.0 amps
-I2v . 05 amjB
Maartg Caraxr Tcnruns) snip
Load Reaction: Aiaomanc short cacuil recovery
SPECIAL: $59.95 each
2 or more $49.95 each
Add: SJSO arfi S*H
Make: Bufichert
Size 10.75 x 6.2 x Z25 inches
Rating: 1 10/220 ac (strap change) Out 81 walls
Outpis +5v • 8.0 ampa
+12v . 2.4 ampa
+I2v . 2.4 amps
+12v-ZI ampj
-12v - 0.4 i
Mating dmaas Mole*
Load Reaction: AvaomMk shurl canal marvrry
SPECIAL: $49.95 each
2 or more $39.95 each
Add: S7 X SAI cadi
5900 Cassandra SmHh Bd, htxao\ Th. 37343
Tetephone 615 842-4600 Telex 510 6XXX63)
68000 68020 68010
68008 6809 6800
Write or phone for catalog,
AAA Chicago Computer Center
120 Chestnut Lane — Wheeling IL 60090
(312) 459-0450
Technical ConiutUrilon available mcnl weekday! Irom 4 PM to S PM CST
60
Ocwbeffl?
'68' Micro Journal
Stop!
Get a 25 Mega-
Byte Hard Disk
practically FREE
only 1C
•Be Sure to Consider the
SPECIAL MUSTANG-08/A
10 Sale on outside
back cover
*This is exactly one cent more than the price of
the same system - with two floppies - for one cent
more you get one floppy and a 25 MegaByte Hard Disk with the faster
CPU board, additional serial ports and improved clock!
includes Professional OS-9™ Version 2 and the $500.00 C Compiler!
Remember - When it's over, IT'S OVER!
We don't know how long this very, very low price can be maintained, don't miss it!
Data-Comp Div. - CP1
68' Micro Journal October ^7 61
INDUSTRIAL COMPUTER SYSTEMS
68008 - 68020 VME STD SBC
STD BUS I/O OS9
BILL WEST INCORPORATED products and services tec intended for
industrial mainf microcomputers who are looking fori supplier prepared
to provide complete engineering end technical support- We configure
systems wilh com p owenti and software selected ordeiigned to meet «pecific
customer requirement*. We specialize in solving industrial I/O problems. A
full range of services is available including system specification, integra-
tion, and installation, hardware deaign and production, and system and
application programming.
SYSTEMS
BILL WEST INCORPORATED provides microcomputer systems ton-
f iguiedlo meet the needs of paiticular customer applications. Tliese systems
use 68000 family processors and the OS9(ud) opeiating system. We design
and configure systems based on VME bus, STD bus, and single board
computers, with processor* ranging from the 6809 to the 68020. Disk based
and ROM based systems are suppoiicd. Systems for development and target
applications can be supplied.
I/O EXPANSION
The STD bus is an excellent WO expansion bus. Many off-the-shelf
interfaces are available, from simple parallel interfaces and intelligent
communication con tro lien to pneumali c valves and radio receivers on catd.
BWI interfaces the STD bus to system* via the Motorola I/O channel, the
SCSI interface, and ARCNET. The STD bus maybe ccrtftguicd as a simple
expansion bus, an intelligent subsystem, or a remote I/O syium.
MACINTOSH AND ATARI ST EXPANSION
Expansion slots may be added to Maoinlosh(tm) or Atari ST(un) systems
using the STD bus- Connect an STD expansion bus via the SCSI port, and
use any of the wide vaiictyof STD bus interface cards.
BILL WEST INCORPORATED
174 Robert Treal Dr., Miiford Connecticut 06460
203 878-9376
TM
ML/I
A MACRO PROCESSOR
FOR
POWER USERS
Now available for generic SS-50 Bus systems
Soon to be available for trie Macintosh™
This is a general purpose text-replacement macro processor, not tied
to any particular editor or programming language. It operates on any
kind of input text and replaces text as indicated by user-written
macros.
The SS-50 Bus version is written forthe FLEX^ope rating system and
is furnished on 5 1/4' SS/SD 35 tpi floppy disks.
Source code for trie SS-50 Bus version now available, at extra etiarge.
ML/I (FLEX 6809) $75.00
ML/I (Macintosh) Inquire for cost & availability
Sorry, no credit cards presently accepted.
Cognitive Engine Corporation
34 Atlantic Street
Lynn, Mass. 01902
68 MICRO JOURNAL
Reader Service Disks
'IJfetime,
Disk' 1 Filcsoft, Minicat. Minicopy.Minifms.
••Poetry. ••Foodlist. "Diet.
Disk- 2 Diskedil w/ insL& fixes. Prime. 'Pnnod,
••Snoopy. "Football. ••Hexpawn,»*ljfelime.
Disk- 3 Cbug09. Seel. Sec2. Find. Table2, Intext. Disk-
exp, 'Diskiavc.
Disk- 4 Mailing Program, •Finddat, 'Change, 'Testdisk.
Disk- 5 •DISKFTX l.*DISKFTX2. ••LETTER,
••LOVESIGN. ••BLACKJAX. "BOWLING.
Disk- 6 ••Purchase Order, Index (Disk file indx).
Disk- 7 Linking Loader, Rload. Harkncss.
Disk- 8 Cncst. Ijnphcr (May 82).
Disk. 9 Datecopy. Diikfix (Aug 82).
Disk- 10 Hone Accounting (July 82).
Dlsk-11 Dissembler (June 84).
Disk- 1 2 Modcm68 (May 84).
Disk- 13 *Inilmf68. Testmf68, •Cleanup, •Dikalign. Help,
Dale.Txt.
Disk- 1 4 •litis, *Test, *TennioaI, 'Find, •Diskedil. Intl. Lib
Dlsk-15 Mod em 9 + Updates (Dec. 84 Gilchrist) to Modem9
(Apiil 84 Com mo).
Disk- 16 Copy.Txt, Copy. Doc, CatTxl, Cat. Doc.
Dllk-17 Match Utility. RATBAS. A Basic Prrproc .csor.
Disk- 18 Pane. Mod, Siac.Cmd (Sept. 85 Armstrong). CMDC
ODE. CMD.Txt (Sept. 85 Spray).
Disk-19 Clock. Date. Copy. Cat. PDEI.Asm & Doc.,
Erron. Sys, Do, l-og.Aim & Doc.
Disk -20 UNIX Like Tools (July & Sept. 85 Taylor A
Gilchrist). Dragon.C, Grep.C. US.C. FDUMP.C.
Dlsk-2 I Utilities & Games - Date, life. Madness. Touch,
Goblin. Surshot, & 15 more.
Disk- 22 Read CPM & Non-FLEX Disks. Fraser May 1984.
Disk- 23 ISAM. Indexed Sequential file Accessing Methods,
Condon Nov. 1985. Extensible Table Diiven. Lan
guage Recognition Utility, Anderson March 1986.
Disk- 24 68' Micro Journal Index of Articles A Bit Bucket
Items from 1979 - 1985, John Current.
Disk-25 KERMIT for FI.EX derived from the UNIX ver. Buig
Feb. 1986. (2)5- Disks or (l)-8" Disk.
Dlsk-26 Coropacta UniBoard review, code A diagram.
Burlison March '86.
Dlsk-27 ROTABrr.TXT, SUMSTEST TXT. CONDATA.TXT.
BADMEN.TXT.
Disk -28 CT-82 Emulator, bit mapped.
Dlsk-29 ••Star Trek
Disk -30 Simple Winchester, Dec'86 Green.
Dlsk-31 ••• Read/Write MS/PC-DOS (SK'DOS)
Disk -32 Hier-UNIX Type upgrade - 68MJ 2/87
NOTE:
This is * reader service ONLY I No Warranty is olfered or implied,
they are as received by 68' Micro Journal, and are for leader
convenience ONLY (some MAY include fixes or patches). Also 6800
and 6809 programs are mixed, mm each is fairly simple (mostly) to
conven to the other. Software is available so cross -assemble all.
• Denotes 6800 • ♦• Denotes BASIC
••* Denotes 68000 - 6809 no indicator.
Specify 8" disk $1950
5" disk $16.95
Add S/II - J3.S0
Overseas add: S4.50 surface • $7.00 Air Mail. USA Dollars
68 MICRO JOURNAL
PO Box 849
Hixson, IN 37343
615 842-4600 - Telex 510 600-6630
62
October '87
'68' Micro Journal
IF YOU NEED IT, WE'VE GOT ITI
(OR WE'LL MAKE IT)
Yes, PC RIPHERAL TECHNOLOGY sltfl sells the FD-2 lor SS-SO Bus Com pulers And. if you don'l
need it, we sell other products from Single Board Computers to Systems which should lit your
requirements Custom Hardware Design is also available Here's a small sample ol what we ofler
FD-2 FLOPPY DISK CONTROLLER
• Controle up to louf 6'b" Drives
• Rum in 1 o< 2 MHZ Systems
• Can be evntiguied tor either 4or 16
. Addresses pet I/O Skit
ISS30 of SSioC)
• Uses WD2797 Controller Chip
Icompatiblewilh 1771/179X
Controller Chip|
• Hardware and Software compatible
wilh SWTPC DC 4 controllers
• 6800/8809 Flea Drivers available
• SK'DOS Operatlnp, System or
OS9/6809 Oliver package
T , : mm
PT69-4 SINGLE BOARD
COMPUTER
• 6809E Processor/I MHZ Clock
• Tour RS232 Serial Ports uairo,
essos
• Two 6-Bil parallel Porta using
6821 PIA
• Time-Ol0ayCIOc*IMCI46818)
• SBK ol user RAM
• 2Kor 4K of EPROM using 2716
or 2732
• Double Sided/OouDle OenSily
Floppy Controller
• Can Read/Wme Radio Snack
OS/9 (Diskettes
• Board Sue 5 8" X 8 2
h cai m ef *
t **-
**
MONTHLY SPECIAL**
PT68K-1 10 Mhz $350
Regular Price (495
PERIPHERAL TECHNOLOGY
1480 Terrell Mill Road. Suite S70
Marietta. Georgia 30067
<404) 964-0742 Telex « 880584
VISA/MASTERCARD/CHECK/COD
SYSTEMS
• Floppy or Winchester Versions
Availed*
. Stiibum son seo9 Smote Surd
Conputo o> SflCQS Board
» Win be contguied lo meet your
Requirements
■ OS9 S SK-DOS Operating Syster
> Call or write for system
configurations
Catalogues Available Upon Request
XDMS-IV
Data Management System
Kiicifiiiic Mpon
Html
ii<i
ii ... ««
'iltiii
>
>
;
I
%
///
:::;:: »)
x±j
Hit
llitfi
■ Mil
• III
mm
•n iii
im
i*»t
MM
-MM
B * ■ r
II*
•*
Lltl
l«ll*>
'•*
III*
■ ••(I
1*1*1
«■-
■ c - , i
Mtrt
■ »■•
m<m«
■t-i..
■ Ill
Hint
let
tnvfM
lift
•-•H
••1*1
f itmi a
ft • «4 I *«.
\^» *y
V^iuntfi^y
■sin
■ It!
if
ill!
Hill
• ll
■Ml*
■ 41 >
iimi
■■« Hi
ft0MmWt
IHt'l
■"-■«<■
Mtftltl
l>«
>
■MIMI
. ■*« ii
[Mil
'411
IKilK
■*■ tPP
■li'llll
1
Save $100.00 - Limited Time
Regular $350.00^1<wrOiT^
$249.95
Twhaksl telephone tuhtsnoe Ttl »H M1-3SSI (Evening-)
fcl 1 .>..V - TtcnlcH SyttaiM Cerwvlunli, SK'DOS™ STAR-KITS Corp.
FOR 6809 FLEX-SK-DOS(5/8")
Up to 32 giaa^a/neids per nnrll Up la UifniKto Sod amzl Up to 1024 byte nxndsl User
defined eoan and pom contrail Procnaa files! Form (ileal GondinOTvtl eieaaiml ftn>u
chaining) Upward/Downward 81a tirikuujt Hie jramngt Random file virtual paging I Buik iff
isilitjasl Bulk in ui line "Citarl Fully tssnan nrierud I Enhanced fomul Boldface, Double
width. Italics and Uodertine supported I Written in cetwpaes et/ueoind usanblot bscgratad for
FASTurxusml
XDMS-IV Dela Management System
XDMS-IV |i ■ brand new approach to data management. It not only nmniia uacn ui
deacrttm, enter and retrieve data, but also to erocaw. entire filet praducetg oiauvniaed rejponi.
■am ditplayi arid file output. PruaninA can coraiji of any dfiutof standard high level
tmaiaat including record and field asuawn, larong and aggregation, lookup* in other filca,
tpecia) p mnw aing of record aubacaa. custom report formatting, totaling tod a ub t atsli na,, and
frtwittrwr- of up to three (elated funs as a "duthaan" on user defined output rettnytt.
POWERFUL COMMANDS)
XDMS-IV conAjoaj the fUAerionaliiy of many popular DBMS software systems with > new easy
to use commend set into a tingle integrated package. We've included many new feature* and
connnands including a ant of general file ttililis. The pn i raa i n g corananda ajc lopui- rWu-
Ouqpua (IPO) cnannd which allows akocst instant implenersadbn of a pro^ deuan.
SESSION OBIENTEDt
XDMS-IV ia aaaaion arianled. Enter "XDMS" and you are in maunt ensmand of all the
fcaunv. No mora wanlnf for a eommaed to load in from didst Many commanda are ena^diiLc,
auch as OieATE (file defimnoiX UPDATE (file odaor), PURGE and DELETE (irolkiaj.
Cthexa are ea-cssaa "»■"** which are used to erase a uacr pnaoeBB which ia executed with a
RUN command. EiaW may be cased bio a 'process* file which iiuecuua) byanEXECuTV
pm»i Plum— may caecuss other pmewaaea, or Ibaojadvea, cdhcr crjodsoaavally or
laacDBBUxaanafly . M a t aaa and acnen prompu are easily gale a*, and entbe uacr ■ceakaisona can be
run wehcu aver krvina XDMS-IVI
ITS tASY TO USES
XDMS- IV eeeps data niMtam anpts) Rather than aeaiaji a mnptei DBMS which bidet the
true carum of the data, we 'opt XDMS-IV fDs orsaiad. The user new of data nrits'ariatunt ;,
prossDtod Hirnptrn and acjeen output, while the aclual diu rondea in easy to maintain filet, Thu
aspect p*^w;i« asRomisBl pnwanuaioB and reporta wuhout oompjex rndkruucun of the dalabaie
files and atruccure, XDMS-IV may be uaed for a wide range of aPPucaOcas ftotn rim pic mud
otanaa-eonu ,ysvma (.d ihia a u j, urrenusy .. ) to int"<r*ied database systems (aider enuy,
..)■ The etasubuiunt are
Visa & Master Card Excepted
Telephone: 61S-842-4601 or Telex: 510 60tV6flJW
Or Write: S.E. Media, 5900 Cassarxfra Smith RrL,
Hlisofi, Term. 37343
'68' Micro Journal
October '87
63
GMX MICRO-20 PRICE LIST
SBC ACCESSORY PACKAGE IMZO-AP'
MICRO 20 (12.5 MHz) W/1 SAB $2565.00
MICRO 20(16 67 MHz) W/1 SAB :.... J2B95.00
MICRO 20 (20 MHz) W/1 SAB $3295.00
68881 12 5MHz Floating PoinlCoprocessor $ 195.00
68881 16 67MHz Floating Point Coprocessor... J 295.00
68B81 20MHz Floating Point Coprocessor $ 495.00
MOTOROl A 68020 USERS MANUAL -..$ 18.00
MOTOROLA 68881 USERS MANUAL S 18.00
.11690.00
The package includes a PC-style cabinet with a custom backpanel.
a 25 Megabyte (unformatted) hard disk and controller, a iloppy disk
drive, a 150 watt power supply, cooling Ian, panel mounted reset and
aborl switches, and all necessaiy internal cabling (For use with
SAB-9D serial connectors only }
2nd 5 '80 FLOPPY & CABLES FORM 20- AP. ADD S 250.00
SECOND 25MB HARD DISK & CABLES. ADD $ 780.00
TO SUBSTITUTE 50MB HD FOR 25MB HD, ADD S 290.00
TO SUBSTITUTE BOMB HD FOR 25MB HD, ADD $1500.00
TO SUBSTITUTE 155MB FOR 25MB HD. ADD $2100 00
60MBTEAC STREAMER WITH ONE TAPE $ 870.00
PKG 0F5TEACTAPES $ 112.50
CUSTOM BACK PANEL PLATE (BPPPC) $ 44.00
.$ 335.00
The SBC-16S extends the I/O capabilities ol the GMX Micro-20
68020 Single-board Computer by adding sixteen asynchronous
serial I/O ports. By using two SBC-16S boards, a total ol Ihirty-six
serial pons are possible
.$165.00
The board provides level-shifting between 1TL level and
standard RS-232 signal levels lor up to 4 serial I/O poits.
■rfil I K 'I J JJsTJKJl Hi ■ ill M; ItkM : I iBrf i ! Jl $398.00
The GMX SBC-60P uses three 68230 Parallel Interlace/Timers
(Pt/Ts) to provide up to forty-eight parallel I/O lines. The I/O lines
are bulfered in six groups of eight lines each, with separate buffer
direction control for each group. Buller direction can be fixed by
hardware lumpers, or can be software programmable lor
bidirectional applications
$75 00
The SBC-WW provides a means of developing and testing
custom I/O interface designs lor the GMX Micro-20 68020 Single
board Computer The board provides areas for both DIP (Dual Inline
Package) and PGA (Pin Grid Array) devices, and a pre-wired
memory area tor up to 512K bytes ot dynamic RAM
■ HH:H«JiMiil;liIM:|iB;M| $195 00
THe SBC BA provides an interlace between Ihe GMX Micro-20
68020 Single-board Computer and the Motorola Input/Output
Channel (I/O bus). With the I/O bus. up 1o sixteen off-the-shelf or
custom peripheral devices (I/O modules) can be connected to the
GMX Micro-20
flRCNFT LAN board w/o Software (SBC-AN
$475.00
The SBC-AN provides an interface between the GMX Micro-20
68020 Single-board Computer and the ARCNET modified token-
passing Local Area Network (LAN) originally developed by Datapoint
Corp The ARCNET is a baseband network with a data transmission
rale of 2.5 Megabits/second The standard transmission media is a
singie 93 ohm RG-62/U coaxial cable Fiber optic versions are
available as an option
0S9LAN Sollware Driver} lor SBC- AN $120.00
I/O EXPANSION BOARDS
16POHT SERIAL BOARD ONLY (SBC- 16S)
RS232 ADAPTER SAB-25. SA8-9D or SAB-8MII
PROTOTYPING BOARD (SBC-WW)
GMX MICRO-20 SOFTWARE
020 BUG UPDATE - PROMS & MANUAL $150.00
THESE 68020 OPERATING SYSTEMS ARE PRICED
WHEN PURCHASED WITH THE MlCRO-20. PLEASE
ADD $150.00 IF PURCHASED LATER FOR THE
UPDATED PROMS AND MANUALS. ALL SHIPPED
STANDARD ON SV«" DISKS.3V>" OPTIONAL IF
SPECIFIED.
OS9/6B020 PROFESSIONAL PAK $850.00
Includes O.S.. "C". uMACS EDITOR. ASSEMBLER. DEBUGGER,
development utilities. 68881 support
OS9/68020 PERSONAL PAK $ 400.00
Personal 0S-9 systems require a GMX Mtcro-20 development
system running Professional 0S-9/68020 for initial configuration.
Olher Software lor OS-9/68020
BASIC (included in PERSONAL PAK) ..,
S 200.00
C COMPILER (included in PROFESSIONAL PAK)
. $ 750 00
PASCAL COMPILER
$ 500.00
UNIFLEX
UniFLEX
$ 450.00
UniFLEX WITH REAL-TIME ENHANCEMENTS
$ 800.00
Other Software lor UniFLEX
UniFLEX BASIC W/PRECOMPILER S 300.00
UniFLEX C COMPILER $ 350.00
UniFLEX COBOL COMPILER $ 750.00
UniFLEX SCREEN EDITOR ** 150.00
UniFLEX TEXT PROCESSOR $ 200.00
UniFLEX SORT/MERGE PACKAGE $ 200.00
UniFLEX VSAM MODULE S 100.00
UniFLEX UTILITIES PACKAGE I $ 200.00
UniFLEX PARTIAL SOURCE LICENSE $1000.00
GMX EXCLUSIVE VERSIONS, CUSTOMIZED FOR
THE MICRO-20, OF THE BELOW LANGUAGES
AND SOFTWARE ARE ALSO AVAILABLE
FROM GMX.
ABSOFT FORTRAN (UniFLEX) $1500.00
SCULPTOR (specify UniFLEX or 0S9) $ 995.00
FORTH (0S9) $ 595.00
DYNACALC (specify UniFLEX or 0S9) S 300.00
GMX DOES NOT GUARANTEE PERFORMANCE OF ANY GMX
SYSTEMS, BOARDS OR SOFTWARE WHEN USED WITH
OTHER MANUFACTURERS PRODUCT.
ALL PRICES ARE FOB. CHICAGO IN U.S. FUNDS
TO ORDER BY MAIL SEND CHECK OR MONEY ORDER OR USE
YOUR ViSA OR MASTER CHARGE Please allow 3 weeks tor
personal checks to clear. US. orders add $5 handling it under
$200 00 Foreign orders add $10 handling il order is under
$200.00 Foreign orders over $200.00 will be shipped via Emery Air
Freight COLLECT, and we will charge no handling All orders must
be prepaid in U S funds Please note that foreign checks have
been taking about 8 weeks lor collection so we would advise wiring
money, or checks drawn on a bank account in the US Our bank is
the Continental Illinois National Bank ot Chicago. 231 S, LaSalle
Street. Chicago. IL 60693. account number 73-32033
CONTACT GMX FOR MORE INFORMATION ON THE ABOVE
PRODUCTS
GMX STILL SELLS GIMIX S50 BUS SYSTEMS. BOARDS & PARTS
CONTACT GMX FOR COMPLETE PRICE LIST
GfTlX 1337 W. 37th Place. Chicago, IL 60609 (312) 927-5510 — TWX 910-221-4055 — FAX (312) 927-7352
64 October '87 '68' Micro Journal
Mj^^the — llStaiV'
Now Offenng *FLEX" (2 Versions)
AND 'STAR-DOS PLUS+ '"
For Otttmrtng Call
(615)842-4600
FROM - DATA-COMP, C.P.I.
A Family of 100% 68XX Support Facilities
The Folks who FIRST Put FLEX" on
The CoCo
vH
t^*>*
&.:>
*
p^^r^
C o1
«* e
**%P
^*" o* 1
M
STAR DOS PLUS +
• Functions Same as FLEX
• Reads • writes FLEX Disk*
• Run FLEX Programs
• Just type: Run 'STAR DOS"
• Over 300 utilities & programs
to choose from
f
TSC Editor
NOW $35.00
L
y)
PLUS
ALL VERSIONS OF FLEX & STAR-DOS
+ Read-Write-Dir RS Disk
+ Run RS Basic from Both
+ More Free UtJities
INCLUDE
+ External Terminal Program
+ Test Disk Program
+ Disk Examine & Repair Program
+ Memoty Examine Program
+ Many Many More!!!
TSC Assembler
(bgtMOO
L
NOW $35 OO
1
CoCo Disk Drive Sgsleuis
2 TH1NLINE DOUBLE SIDiO DOUBLE DENSITY DISK DRIVES
SYSTEM WITN FDUEE SUCI-L* .CAIINtT, 01SI OllVE CARLE. JiH
NEW DISK CONTROLLER JP0-CP VJTH J-OOS.RS-DOS OPERATINC
SYSTEMS. |4*«.»)
• Spiel (y What CONTROLLER You Want JAN, or RADIO SHBCX
TMINLINE DOUBLE S1DE0
DOUBLE DENSITY *0 TRACKS
MK VPCSAOi
FOR C.0,E, P, AND COCO II
RADIO SHACK BASIC I. 2
EAD10 SHACK DISK BASIC 1.1
Verhjhm Diskettes
Sinftlf Sldad Doubl« DtDtity
Deubl* Sided Double Deoelty
Cooli oilers
JtN JPO-CP WITH J-0OS
WITH J-OOS, KS-OOS
RADIO SHACK ] . I
RADIO SHACK Diik CONTROLLER 1.1
Disk Di ive Ciu!>-'>
Ceble for One Drive
Cable for Two Drive*
DISK OltVE CABINET POl A
III*. as
SINGLE (WIVE
DISK DRIVE CAEINET POl TWO
TK1NLINE DRIVES
} 14.00
nirruj
} 14.00
EPSON U-BO
EPSON HX-70
EPSON KX-100
•139. 95
ACOMoaiE* rot ifboc
$119. *»
tiM.aj
61*6 2E SEEIAL BOARD
81*9 32K EXPAND TO I2BK
EPSON MJ-M-UO KIIMNS
413*. aj
EPSON LX-80 ElEtONS
TEACTOE UNITS PO« LX-BO
CABLES 4 •THE* IHTCK/ACKS
CALL POR PRICING
i la.tj
i 24. as
I 29.95
t 24. as
i 24. as
* 4».»5
t ta.as
B2M.9J
•us.aj
$»*i.*i
JI49.95
» s.as
DATA-COMP
5900 Cassandra Smith Rd
Hixson. TN 37343
C3|
SHIPPING tS*
f^:^ d ^" s .| (615)842-4600
n(H. $2.50 'Of OtoWring
Telex 5106006630
s
An Ace of a System in Spades! The New
MUSTANG-08/A
Now with 4 aerial porta standard ft speed increase to 12 Mhs CPU + on board battery
backup and Includes the PROFESSIONAL OS-9 package - tnfhwling the $500.00 06-9
C compHerl This offer won't last forever!
NOT 128K, NOT 512K
FULL 768K No Wait RAM
The MLSTANG4B™ system took every hand Inn al
other 68008 syserra we tetod. runnijj OS-9 68KI
The MUCTAN&08 hdudes OS^SflK™ andbr Peter
Stark* SKTJOS~ StCOOS is a single user, single taking
j system thai takes up where *R£X™ toll off. SCOOS Is
■ aduaty a 68XXX R£X type eySam (Not * TSC fnxkn)
Now even faster!
with 12 Mhz CPU
!
C CcnnpQe times OS-9 68K. Hard Disk
IVSTANQ4B BWeCPU OrrtnMe*
Other poputv SXXB eyskm 1 rrin 05 hc
MUSTANG420 rrin -21 sac
J>
System mr hides OS-9 68K or SCTXB - Your Oiokz
Specifications:
CPU
MC660OB
12 Mb
RAM
76S<
to Wei 9sise
25BK Chips
PORTS
4-RS232
MCTO1 DUART
2-BbtP8raU
M05821 PM
aocx
MK48TQ2
Real Tn» Cbr* B*. BU
EPROM
16K.32KOT64K
Set****
FLOPPY
WD1772
5 1M CrMS
HARD OtSK
rtBrtsoj Port
wmoae Bam
25 Megabyte
Hard Disk System
■V Now more serial ports - taster CPU """N
I Battery B/U - and $850.00 O&O Profes- 1
■i slonal with C compiler included! .
See Mustang-02 Ad ■ page 5
'$400.00
(or trade-in delate
MUSTANG-08
LOOK
■ VflrwHt
32 l« Retina
Beeger Lon»
.L8.0...9.0
..8.8. ..6.3
/■ hit I; V
register long I;
tor (bO; I < 090890; ♦*!);
$1,998.90
Complete with PROFESSIONAL OS-0
include the $500.00 C compiler, PC
style cabin e t, heavy duty power supply,
5" DDDS SO track floppy. 25 MegByte
i Hard Disk - Ready to Run }
Untw other 68008 systems there are several s^re^ar*
dfbrerces. The MUSTANG-08 is a lull 12 Megahertz system. The
RAM uses NO wal stales, this means ful bore MUSTANG type
performance.
Abo, albwrg lor addressable ROMfROM the RAM is the
maximum stowed lor a 68008. The 68008 can only address a
total of 1 Megabytes of RAM. The design allows al the RAM
apace (for all practical purposes) to be utilized What Is not
avaiabie to the user Is requred and reserved for the system
ARAM defe al 480K can be easiy ennflgursd, leavrtg 2S8K
tree tor OKvarrvsystem RAM space. The RAM DISK can be
configured to any size your appfeaiiDn requires (system must
have 128K in adoabn to Is other req ufce m w e a ). Laaving the
r e m a trier of the ordinal 768K for program use. Sutfber*
source Included (dnVers, etc)
MUfTAMMHtoiB
f
Data-Comp Division
A Decade of Quality Service"
Systans World Wide
Computer Publishing, Inc. 5900 Casanria Sirtti Road
Tetedwe 61 5 842-4601 -Telex 510 600^0 Kaon, Tn 37343
* Those, vth SWTPC rtdenrfty RfX 5' - Cd for specfc* Mb.
-J